<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
      import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
      
      
      @Configuration
      public class InterceptorConfig implements WebMvcConfigurer {
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
              registry.addInterceptor(jwtInterceptor())//攔截器自定義攔截邏輯執行類
                      .addPathPatterns("/**")//攔截所有請求地址
                      .excludePathPatterns("/data-admin/*/login");//越過攔截所有請求,通過判斷token是否合法來決定是否需要登錄
          }
      
          @Bean
          public JwtInterceptor jwtInterceptor(){
              return new JwtInterceptor();
          }
      }

      執行類:

      public class JwtInterceptor implements HandlerInterceptor {
      
          @Autowired
          private RedisTemplate redisTemplate;
      
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      
              String token = request.getHeader("token");
              //如果不是映射到方法直接通過
              if (!(handler instanceof HandlerMethod)) {
                  return true;
              }
              //執行認證
              if (StrUtil.isBlank(token)) {
      
                  throw new ServiceException("無token,請重新登錄");
      
              }
      //        //獲取token中的username
      //        String userName;
      //        try {
      //            userName = JWT.decode(token).getAudience().get(0);
      //
      //        } catch (JWTDecodeException j) {
      //            throw new RuntimeException("token異常");
      //        }
      //        //查看token的username
      //        if (!userName.equals("admin")) {
      //            throw new ServiceException("用戶不存在");
      //        }
      //        //密碼加簽驗證token
      //        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("123456")).build();
      //        try {
      //            jwtVerifier.verify(token);
      //        } catch (JWTVerificationException e) {
      //            throw new ServiceException("token驗證失敗,請重新登錄");
      //        }
      
              String name = "admin";
              String password = "";
              try {
                  //獲取redis中的密碼
                  password = String.valueOf(redisTemplate.opsForValue().get("admin"));
              } catch (Exception e) {
                  throw new ServiceException("redis連接失敗,請聯系管理員");
              }
              //驗證token加密串
              try {
                  if (!MD5Util.verify(name + password, token)) {
                      throw new ServiceException("token驗證失敗,請重新登錄");
                  }
              } catch (JWTVerificationException e) {
                  throw new ServiceException("token驗證失敗,請重新登錄");
              }
              return true;
          }
      }

       

       

      redis連接工具類:

      @Configuration
      public class RedisConfig {
          @Bean(name="redisTemplate")
          public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
              RedisTemplate<String, String> template = new RedisTemplate<>();
              RedisSerializer<String> redisSerializer = new StringRedisSerializer();
              template.setConnectionFactory(factory);
              //key序列化方式
              template.setKeySerializer(redisSerializer);
              //value序列化
              template.setValueSerializer(redisSerializer);
              //value hashmap序列化
              template.setHashValueSerializer(redisSerializer);
              //key haspmap序列化
              template.setHashKeySerializer(redisSerializer);
              return template;
          }
      }

       

      簡單的MD5加解密,簽名認證:

      public class MD5Util {
      
          //秘鑰
          public static final String KEY = "***********";
      
          /**
           * 帶秘鑰加密
           *
           * @param text 明文
           * @return 密文
           */
          public static String md5(String text) {
              // 加密后的字符串
              String md5str = DigestUtils.md5Hex(text + KEY);
              System.out.println("MD5加密后的字符串為:" + md5str);
              return md5str;
          }
      
          /**
           * MD5驗證方法 根據傳入的密鑰進行驗證
           *
           * @param text 明文
           * @param md5  密文
           * @return
           * @throws Exception
           */
          public static boolean verify(String text, String md5) {
              String md5str = md5(text);
              if (md5str.equalsIgnoreCase(md5)) {
                  System.out.println("MD5驗證通過");
                  return true;
              }
              return false;
          }
      
          public static void main(String[] args) {
              String signKeyMd5 = md5("明文");
              System.out.println(signKeyMd5);
              System.out.println(verify("admin", signKeyMd5));
          }

       

      posted on 2022-09-08 17:04  茫無所知  閱讀(25)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩高清亚洲日韩精品一区二区| 日韩一区二区三区无码影院| 亚洲AV成人片不卡无码| 中文字幕人妻无码一区二区三区| 天天做天天爱夜夜夜爽毛片| 国产精品视频免费一区二区三区| 成人三级视频在线观看不卡| 末成年娇小性色xxxxx| 亚洲人成网站观看在线观看| 在线看国产精品自拍内射| 亚洲欧美精品在线| 宜黄县| 一个人看的www视频免费观看| 在线观看成人av天堂不卡| 亚洲乱码中文字幕小综合| 久久精品国产福利一区二区| 91热在线精品国产一区| 亚洲精品综合网二三区| 亚洲综合精品一区二区三区| 丝袜a∨在线一区二区三区不卡 | 又大又粗欧美黑人aaaaa片| 久久精品一区二区东京热| 国产亚洲精品AA片在线爽| 日韩国产成人精品视频| 久女女热精品视频在线观看| 亚洲国产精品自产在线播放| 国产无套内射普通话对白| 国产成人综合在线观看不卡| 亚洲国产av区一区二| 天堂va亚洲va欧美va国产| 色窝窝免费播放视频在线| 国产一区二区av天堂热| 国产在线一区二区不卡| 激情久久av一区av二区av三区 | 四虎成人精品无码| 午夜成人无码免费看网站| 国内精品一区二区不卡| 和林格尔县| 娱乐| 伊川县| 庐江县|