Springboot拦截器配置
@Component
public class IndexInterceptor implements HandlerInterceptor {
@Reference(interfaceClass = UserService.class,version = "1.0.0",check = false,timeout = 15000)//使用了dubbo,可以不加
private UserService userService;
//preHandler方法实在连接到达前进行判断,false为连接拒绝,true为连接通过
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("====拦截器启动====");
boolean b = false;
User user = (User) request.getSession().getAttribute(Constants.SESSION_USER);
if(ObjectUtils.allNull(user)){
b = false;
}else{
User user2= userService.queryUserByPhoneAndPwd(user.getPhone(), user.getLoginPassword());
if(ObjectUtils.allNotNull(user2)){
b = true;
}else{
b=false;
}
}
System.out.println("====拦截器结束----->b="+b+"====");
return b;
}
/*
postHandler用于对拦截信息处理完毕后进行其他操作
需要perHandler方法的返回值为true时才能执行
通肠胃preHandler通过后,就会执行
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
/* 需要perHandler方法的返回值为true时才能执行
该方法主要用于清理资源等
它将在整个请求完成之后,也就是DispatcherServlet渲染了视图执行后,才会运行
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}