zoukankan      html  css  js  c++  java
  • 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 {
    
    }
  • 相关阅读:
    docker2核 elasticsearch卡死
    spring cloud config
    App网关Zuul
    spring Ribon
    spring Feign声明式服务消费(Ribbon Hystrix )
    spring Hystrix
    spring cloud 整体介绍
    springbean 生命周期
    xml六种解析方式
    jdk8中的forEach使用return执行下一次遍历
  • 原文地址:https://www.cnblogs.com/jingjiren/p/12966866.html
Copyright © 2011-2022 走看看