Interceptor 中校验 token

@Component
@Slf4j
public class TokenCheckInterceptor implements HandlerInterceptor {/*** 解析 token*/@Resource(name = "jwtDecoderConfig")private JwtDecoder jwtDecoderClassPath;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {if (handler instanceof ResourceHttpRequestHandler) {return true;}//return true;Map<String, Object> userInfo;try {final String basicKey = "Bearer";String header = request.getHeader("Authorization");if (StringUtils.isBlank(header)) {log.info("Token is null");responseError(response, "Token is null");return false;}if (!header.contains(basicKey)) {log.info("header config error, no ===========> {}", basicKey);responseError(response, "header config error, no " + basicKey);return false;}//获取 tokenString basicToken = header.split(basicKey)[1].trim();// 解析 tokenuserInfo = jwtDecoderClassPath.getInfoFromToken(basicToken);if (userInfo == null) {log.info("User is empty, 请重新登录!!!");responseError(response, "User is empty, 请重新登录!!!");return false;}BasicUser basicUser = new BasicUser();BeanUtils.populate(basicUser, userInfo);if (OrderConstant.BOSS.equals(basicUser.getChannel())) {if (basicUser.getUserId() == null || StringUtils.isBlank(basicUser.getUserType())) {log.info("User is empty, 请重新登录!!!");responseError(response, "User is empty, 请重新登录!!!");return false;}}else {if (basicUser.getMemberId() == null) {log.info("User is empty, 请重新登录!!!");responseError(response, "User is empty, 请重新登录!!!");return false;}}log.info("Parse the user information as ===========> {}", userInfo);ThreadLocalCache.set("basicUser", basicUser);return true;}catch (Exception e) {log.error("Parse token exception, {}, {}", e.getMessage(), e);responseError(response, "User is empty, 请重新登录!!!");return false;}}private void responseError(HttpServletResponse response, String message) {PrintWriter  writer=null;try {response.setContentType(OrderConstant.CONTENT_TYPE_JSON);//设置编码,否则中文字符在重定向时会变为空字符串writer= response.getWriter();writer.write(JSON.toJSONString(DataMessageWrapper.failureMessage(message)));} catch (IOException e) {log.error("用户信息校验失败:{}",message,e);}finally {if(writer!=null){writer.close();}}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部