
image.png
LoginInterceptor
1.前处理
@Autowired
private TokenService tokenService;
public 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.isNotBlank(token)){
return true;
}
//3.取到token,需要实现sso系统的服务,根据token取用户信息
E3Result result = tokenService.getUserByToken(token);
//4.没有取到用户信息,登录过期,直接放行
if(result.getStatus() != 200){
return true;
}
//5.取到用户信息,登录状态
TbUser user = (TbUser) result.getData();
//6.把用户信息放到request中,只需要在Controller中判断request中是否包含user信息,无论如何,放行.
request.setAttribute("user", user);
return true;
}