记得公司之前有过这么一个需求, 搜索全部文件时, 用户登录了文件的收藏状态就显示出来, 用户没登录时就不显示. 不管登没登陆都可以查询搜索, 只是其收藏状态显示不显示.当时token验证拦截器 是忽略带有不用登陆注解的方法, 其余的都需要进行登录token验证. 这时候现有注解就不能满足条件了. 新增一个注解, 让他可登不可登都可以.
token验证拦截器(JwtInterceptor)
// 带JwtMiddle注解的请求,可登不可登都可以, 登录了则进行token验证, 验证成功将lastToken赋值,没登录lastToken 为 null if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; JwtMiddle jwtMiddle = handlerMethod.getMethodAnnotation(JwtMiddle.class); if (jwtMiddle != null) { if (StringUtils.isNotBlank(authHeader) && authHeader.startsWith(JwtTokenUtil.TOKEN_PREFIX)) { // 获取token final String token2 = authHeader.substring(7); String userId = JwtTokenUtil.getUserId(token2, audience.getBase64Secret()); ValueOperations valueOperations = redisTemplate.opsForValue(); Object rToken = valueOperations.get(userId); if (token2.equals(rToken)) { lastToken = token2; } } else { lastToken = null; } return true; } }
JWT验证可拦可不拦注解
/** * JWT验证可拦可不拦注解 */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface JwtMiddle { }
原文:https://www.cnblogs.com/jingjiren/p/12966866.html