登录拦截器

来源:互联网 发布:实现java线程池 编辑:程序博客网 时间:2024/05/22 10:58

public class LoginInterceptor implements HandlerInterceptor {

@Autowiredprivate TokenService tokenService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        // 前处理,执行handler之前执行此方法。    //返回true,放行 false:拦截    //1.从cookie中取token    String token = CookieUtils.getCookieValue(request, "token");    //2.如果没有token,未登录状态,直接放行    if(StringUtils.isBlank(token)){        return true;            }            //3.取到token,需要调用sso系统的服务,根据token取用户信息    E3Result e3Result = tokenService.getUserByToken(token);    //4.没有取到用户信息。登录过期,直接放行。    if (e3Result.getStatus() != 200) {        return true;    }    //5.取到用户信息。登录状态。    TbUser user = (TbUser) e3Result.getData();    //6.把用户信息放到request中。只需要在Controller中判断request中是否包含user信息。放行,判断用户是否登录    request.setAttribute("user", user);    return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)        throws Exception {    //handler执行之后,返回ModeAndView之前}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)        throws Exception {    //完成处理,返回ModelAndView之后。    //可以再此处理异常}

}

原创粉丝点击