package com.moral.api.interceptor; import com.alibaba.fastjson.JSON; import com.moral.api.mapper.ManageLogMapper; import com.moral.api.util.LogUtils; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import com.moral.util.TokenUtils; import com.moral.util.WebUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; @Slf4j public class ManageInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("token"); boolean result = TokenUtils.checkToken(token); if (!result) { ResultMessage resultMessage = ResultMessage.fail(ResponseCodeEnum.TOKEN_INVALID.getCode(), ResponseCodeEnum.TOKEN_INVALID.getMsg()); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=utf-8"); PrintWriter writer = response.getWriter(); writer.print(JSON.toJSONString(resultMessage)); log.info("token无效访问"); log.info("ip:"+ WebUtils.getIpAddr(request)); log.info("请求URL:"+request.getRequestURL()); //记录到数据库日志 LogUtils.saveFailedRequestForManage(request,"token无效访问;url:"+request.getRequestURL()+";请求token:"+token); return false; } //TokenUtils.extendTokenTime(token); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }