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

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

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

      JWT 工具類的編寫

      導入JWT pom依賴

      <!--JWT 依賴-->
      <dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.9.0</version>
      </dependency>
      ----------------------------------------------------------------------------
      package com.woniuxy.config;


      import io.jsonwebtoken.*;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.security.core.userdetails.UserDetails;
      import org.springframework.stereotype.Component;

      import java.util.Date;
      import java.util.HashMap;
      import java.util.Map;

      /**
      * Description:JwtToken工具類
      *
      * @author: ykq11 <br/>
      * Date: 2022/1/28:21:59 <br/>
      */
      @Component
      public class JwtTokenUtil {
      private static final String CLAIM_KEY_USERNAME="sub";
      private static final String CLAIM_KEY_CREATED = "created";
      @Value("${jwt.secret}")
      private String secret;
      @Value("$jwt.expiration")
      private Long expiration;

      /**
      * Description : 根據用戶信息生成token <br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:08 [ykq11]);
      ** @param userDetails
      * * @return java.lang.String
      */
      public String generateToken(UserDetails userDetails){
      Map<String, Object> claims = new HashMap<>();
      claims.put(CLAIM_KEY_USERNAME,userDetails.getUsername());
      claims.put(CLAIM_KEY_CREATED, new Date());
      return generateToken(claims);
      }
      /**
      * Description : TODO 根據荷載生成JWT Token <br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:11 [ykq11]);
      ** @param claims
      * * @return java.lang.String
      */
      private String generateToken(Map<String, Object> claims) {
      return Jwts.builder().
      setClaims(claims).
      setExpiration(generateExpiration()).
      compact();

      }
      /**
      * Description : TODO 生成token失效時間 <br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:12 [ykq11]);
      * *
      * * @return java.util.Date
      */
      private Date generateExpiration() {
      return new Date(System.currentTimeMillis() + expiration * 1000);
      }
      /**
      * Description : TODO 從token中獲取用戶名 <br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:17 [ykq11]);
      ** @param token
      * * @return username
      */
      public String getUsernameFromToken(String token){
      String username;
      try {
      Claims clams=getClaimFromToken(token);
      username=clams.getSubject();
      } catch (Exception e) {
      username = null;
      }
      return username;
      }
      /**
      * Description : TODO 驗證token是否有效<br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:28 [ykq11]);
      ** @param userDetails,token
      * * @return null
      */
      public boolean validateToken(String token, UserDetails userDetails) {
      String username = getUsernameFromToken(token);
      return username.equals(userDetails.getUsername())&& !isTokenExpired(token);
      }
      /**
      * Description : TODO 判斷token是否可以被刷新<br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:34 [ykq11]);
      ** @param token
      * * @return null
      */
      public boolean canRefresh(String token){
      return !isTokenExpired(token);
      }
      /**
      * Description : TODO 刷新token<br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:36 [ykq11]);
      ** @param token
      * * @return null
      */
      public String refreshToken(String token) {
      Claims claims = getClaimFromToken(token);
      claims.put(CLAIM_KEY_CREATED,new Date());
      return generateToken(claims);
      }
      /**
      * Description : TODO 判斷token是否失效<br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:29 [ykq11]);
      ** @param token
      * * @return null
      */
      private boolean isTokenExpired(String token) {
      Date expiredDate = getExpirationDateFromToken(token);
      return expiredDate.before(new Date());
      }
      /**
      * Description : TODO 獲取token中的失效時間 <br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:32 [ykq11]);
      ** @param token
      * * @return null
      */
      private Date getExpirationDateFromToken(String token) {
      Claims claims=getClaimFromToken(token);
      return claims.getExpiration();
      }

      /**
      * Description : TODO 從token獲取荷載<br/>
      * ChangeLog : 1. 創建 (2022/1/28 22:21 [ykq11]);
      ** @param token
      * * @return Claims
      */
      private Claims getClaimFromToken(String token) {
      Claims claims=null;
      try {
      claims= Jwts.parser()
      .setSigningKey(secret)
      .parseClaimsJws(token)
      .getBody();
      } catch (Exception e) {
      e.printStackTrace();
      }
      return claims;
      }
      }
      posted @ 2022-01-28 22:45  可愛滴皎皎  閱讀(157)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 人人妻人人澡人人爽人人精品av| 浓毛老太交欧美老妇热爱乱| 少妇真人直播免费视频| 开心五月激情五月俺亚洲| 免费看黄色片| 依依成人精品视频在线观看| 亚洲欧美激情在线一区| 成人做受视频试看60秒| 欧美视频二区欧美影视| 国产精品一区二区色综合| 四虎永久免费高清视频| 日本va欧美va欧美va精品| 亚洲精品日韩中文字幕| 日本精品aⅴ一区二区三区| 精品激情视频一区二区三区 | 亚洲中文字幕一区精品自| 中文字幕精品人妻av在线| 国产午夜福利免费入口| 亚洲欧美日韩高清一区二区三区| 国产精品一在线观看| av无码av无码专区| 中文字幕国产日韩精品| 日韩精品中文字幕第二页| 國产AV天堂| 夜夜添狠狠添高潮出水| 在线观看热码亚洲av每日更新| 男人进女人下部全黄大色视频 | 国产老熟女视频一区二区| 国产亚洲第一精品| 黑人异族巨大巨大巨粗| 日韩精品久久不卡中文字幕| 久久亚洲精品中文字幕馆| 人妻伦理在线一二三区| 亚洲精品一二三伦理中文| 国产成人女人在线观看| 亚洲无人区码二码三码区| 中文字幕亚洲人妻一区| 人人妻人人妻人人片av| 国产精品99久久不卡| 人妻日韩人妻中文字幕| 永川市|