public class MyAuthorityInterceptor implements HandlerInterceptor{
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//请求中Controller中的方法名 HandlerMethod handlerMethod = (HandlerMethod)handler; //解析HandlerMethod String methodName = handlerMethod.getMethod().getName(); String className = handlerMethod.getBean().getClass().getSimpleName();
//解析参数,具体的参数key以及value是什么,我们打印日志 StringBuffer requestParamBuffer = new StringBuffer(); Map paramMap = request.getParameterMap(); Iterator it = paramMap.entrySet().iterator(); while (it.hasNext()){ Map.Entry entry = (Map.Entry)it.next(); String mapKey = (String)entry.getKey(); String mapValue = StringUtils.EMPTY; //request这个参数的map,里面的value返回的是一个String[] Object obj = entry.getValue(); if(obj instanceof String[]){ String[] strs = (String[])obj; mapValue = Arrays.toString(strs); } requestParamBuffer.append(mapKey).append("=").append(mapValue); }
if(StringUtils.equals(className,"UserManageController") && StringUtils.equals(methodName,"login")){ log.info("权限拦截器拦截到请求,className:{},methodName:{}",className,methodName); //如果是拦截到登录请求,不打印参数,因为参数里面有密码,全部会打印到日志中,防止日志泄露 return true; } log.info("权限拦截器拦截到请求,className:{},methodName:{},param:{}",className,methodName,requestParamBuffer.toString());
}
}
---------------------------------
@Configuration public class MyWebMvcConfigurer implements WebMvcConfigurer {
@Override public void addInterceptors(InterceptorRegistry registry) {
MyAuthorityInterceptor myAuthorityInterceptor =new MyAuthorityInterceptor ();
registry.addInterceptor(myAuthorityInterceptor);
}
}