ide
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 放行OPTIONS请求
if(HttpMethod.OPTIONS.toString().equalsIgnoreCase(request.getMethod())){
response.setStatus(HttpStatus.NO_CONTENT.value());
return true;
}
// 从前端获取token
String accountToken = request.getHeader("token");
if(StringUtils.isBlank(accountToken)){
accountToken = request.getParameter("token");
}
if(StringUtils.isNotBlank(accountToken)){
// 校验token,获取claims
Claims claims = JWTUtil.checkJWT(accountToken);
if(claims == null){
// 未登录
CommonUtil.sendJsonMessage(response, JsonData.buildResult(BizCodeEnum.ACCOUNT_UNLOGIN));
return false;
}
// 获取用户字段信息
Long accountNo = Long.parseLong(claims.get("account_no").toString());
String headImg = (String) claims.get("head_img");
String username = (String) claims.get("username");
String mail = (String) claims.get("mail");
String phone = (String) claims.get("phone");
String auth = (String) claims.get("auth");
// LoginUser对象需加@Data@Builder@AllArgsConstructor@NoArgsConstructor
LoginUser loginUser = LoginUser.builder()
.accountNo(accountNo)
.auth(auth)
.phone(phone)
.headImg(headImg)
.mail(mail)
.userName(username)
.build();
//request.setAttribute("loginUser",loginUser);
//通过threadlocal
threadLocal.set(loginUser);
return true;
}
return false;
}
@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 {
}
}
|