|
@ -0,0 +1,164 @@
|
|
|
|
package com.yihu.jw.hospital.interceptor;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Created by chenweida on 2017/8/17.
|
|
|
|
*/
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.yihu.jw.entity.iot.gateway.GcHttpLog;
|
|
|
|
import com.yihu.jw.entity.iot.gateway.GcToken;
|
|
|
|
import com.yihu.jw.gateway.dao.GcHttpLogDao;
|
|
|
|
import com.yihu.jw.gateway.dao.GcTokenDao;
|
|
|
|
import com.yihu.jw.hospital.endpoint.gateway.model.BaseResultModel;
|
|
|
|
import com.yihu.jw.util.common.IpUtil;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import org.springframework.web.method.HandlerMethod;
|
|
|
|
import org.springframework.web.servlet.HandlerInterceptor;
|
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 对外的请求拦截
|
|
|
|
*/
|
|
|
|
@Component
|
|
|
|
public class GateWayInterceptor implements HandlerInterceptor {
|
|
|
|
|
|
|
|
private Logger logger = LoggerFactory.getLogger(GateWayInterceptor.class);
|
|
|
|
@Autowired
|
|
|
|
private GcTokenDao gcTokenDaoDao;
|
|
|
|
public static String status = "1";
|
|
|
|
@Autowired
|
|
|
|
private GcHttpLogDao httpLogDao;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* preHandle:预处理回调方法
|
|
|
|
*
|
|
|
|
* @param request
|
|
|
|
* @param response
|
|
|
|
* @param handler
|
|
|
|
* @return
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
|
boolean flag = true;
|
|
|
|
String accesstoken = request.getHeader("accesstoken");
|
|
|
|
String ip = IpUtil.getIpAddress(request);
|
|
|
|
//********************************判断accesstoken********************************
|
|
|
|
try {
|
|
|
|
if (org.springframework.util.StringUtils.isEmpty(accesstoken)) {
|
|
|
|
saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), BaseResultModel.statusEm.token_null.getMessage());
|
|
|
|
//没权限
|
|
|
|
BaseResultModel baseResultModel = new BaseResultModel(BaseResultModel.statusEm.token_null.getCode(), BaseResultModel.statusEm.token_null.getMessage());
|
|
|
|
response.getOutputStream().write(JSONObject.toJSONString(baseResultModel).getBytes());
|
|
|
|
flag = false;
|
|
|
|
}
|
|
|
|
GcToken gcToken = gcTokenDaoDao.findByToken(accesstoken);
|
|
|
|
if (gcToken == null) {
|
|
|
|
saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), BaseResultModel.statusEm.token_no_power.getMessage());
|
|
|
|
//没权限
|
|
|
|
BaseResultModel baseResultModel = new BaseResultModel(BaseResultModel.statusEm.token_no_power.getCode(), BaseResultModel.statusEm.token_no_power.getMessage());
|
|
|
|
response.getOutputStream().write(JSONObject.toJSONString(baseResultModel).getBytes());
|
|
|
|
flag = false;
|
|
|
|
}
|
|
|
|
if (gcToken.getDel() == null || gcToken.getDel() == 0) {
|
|
|
|
saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), BaseResultModel.statusEm.token_out_effect.getMessage());
|
|
|
|
//token无效
|
|
|
|
BaseResultModel baseResultModel = new BaseResultModel(BaseResultModel.statusEm.token_out_effect.getCode(), BaseResultModel.statusEm.token_out_effect.getMessage());
|
|
|
|
response.getOutputStream().write(JSONObject.toJSONString(baseResultModel).getBytes());
|
|
|
|
flag = false;
|
|
|
|
}
|
|
|
|
if (System.currentTimeMillis() > gcToken.getOutTime().getTime()) {
|
|
|
|
saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), BaseResultModel.statusEm.token_out_time.getMessage());
|
|
|
|
//token过期
|
|
|
|
BaseResultModel baseResultModel = new BaseResultModel(BaseResultModel.statusEm.token_out_time.getCode(), BaseResultModel.statusEm.token_out_time.getMessage());
|
|
|
|
response.getOutputStream().write(JSONObject.toJSONString(baseResultModel).getBytes());
|
|
|
|
flag = false;
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
saveHttpLog(ip, JSONObject.toJSONString(request.getParameterMap()), null, accesstoken, request.getRequestURI(), GcHttpLog.flagEm.error.getCode(), e.getMessage());
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
//********************************判断accesstoken********************************
|
|
|
|
|
|
|
|
return flag;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 后处理回调方法
|
|
|
|
*
|
|
|
|
* @param request
|
|
|
|
* @param response
|
|
|
|
* @param handler
|
|
|
|
* @param modelAndView
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
|
|
|
|
String output = "";
|
|
|
|
if (modelAndView != null) {
|
|
|
|
output = JSONObject.toJSONString(modelAndView.getModelMap());
|
|
|
|
} else {
|
|
|
|
Object returnObj = request.getAttribute("returnObj");
|
|
|
|
if (returnObj != null) {
|
|
|
|
output = JSONObject.toJSONString(returnObj);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
HandlerMethod handlerMethod = (HandlerMethod) handler;
|
|
|
|
// response.getOutputStream()
|
|
|
|
String token = request.getHeader("accesstoken");
|
|
|
|
String ip = IpUtil.getIpAddress(request);
|
|
|
|
|
|
|
|
|
|
|
|
saveHttpLog(ip,
|
|
|
|
JSONObject.toJSONString(request.getParameterMap()),
|
|
|
|
output,
|
|
|
|
token,
|
|
|
|
request.getRequestURI(),
|
|
|
|
GcHttpLog.flagEm.success.getCode(),
|
|
|
|
null);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 整个请求处理完毕回调方法
|
|
|
|
*
|
|
|
|
* @param request
|
|
|
|
* @param response
|
|
|
|
* @param handler
|
|
|
|
* @param ex
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void saveHttpLog(String ip, String input, String output, String token, String method, Integer flag, String message) {
|
|
|
|
GcHttpLog gcHttpLog = new GcHttpLog();
|
|
|
|
gcHttpLog.setCreateTime(new Date());
|
|
|
|
gcHttpLog.setIp(ip);
|
|
|
|
gcHttpLog.setInput(input);
|
|
|
|
if(StringUtils.isNotEmpty(output)&&output.length() > 3000) {
|
|
|
|
output = output.substring(0, 3000);
|
|
|
|
}
|
|
|
|
gcHttpLog.setOutput(output);
|
|
|
|
gcHttpLog.setToken(token);
|
|
|
|
gcHttpLog.setMethod(method);
|
|
|
|
gcHttpLog.setFlag(flag);
|
|
|
|
gcHttpLog.setMessage(message);
|
|
|
|
httpLogDao.save(gcHttpLog);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public String getStatus() {
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|