JWT token 攔截器 進行 可攔可不攔處理


  記得公司之前有過這么一個需求, 搜索全部文件時, 用戶登錄了文件的收藏狀態就顯示出來, 用戶沒登錄時就不顯示. 不管登沒登陸都可以查詢搜索, 只是其收藏狀態顯示不顯示.當時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 {

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM