<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                一、引入依賴 ### ![](https://img.kancloud.cn/e2/3f/e23f53bfba3749ed8b65a212ba160510_1626x959.png) ### ~~~ <!-- JWT相關 --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.7.0</version> </dependency> ~~~ ### 二、創建生成和校驗jwt的工具類 ### ![](https://img.kancloud.cn/26/4a/264a97bca3d0b166131b9c614eddcff4_1521x974.png) ### 具體代碼如下: ### ~~~ package net.xdclass.xdvideo.utils; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import net.xdclass.xdvideo.domain.User; import java.util.Date; /* * jwt工具類 * */ public class JwtUtils { //主題 表示該JWT所面向的用戶或實體 public static final String SUBJECT = "xdclass"; //過期時間 毫秒為單位 這里設置了一周的過期時間 public static final long EXPIRE = 1000*60*60*24*7; //秘鑰 public static final String APPSECRET = "xd666"; /* * 生成jwt * */ public static String geneJsonWebToken(User user){ if(user == null || user.getId() == null || user.getName() == null || user.getHeadImg() == null){ return null; } //String token = Jwts.builder(): 創建一個JWT構建器對象 //setSubject(SUBJECT): 設置JWT的主題字段為預定義的 SUBJECT,即"xdclass" //claim("id",user.getId()): 向JWT添加一個自定義聲明(claim),鍵為"id",值為用戶的ID 其他也類似 //setIssuedAt(new Date()): 設置JWT的簽發時間為當前時間 //setExpiration(new Date(System.currentTimeMillis()+EXPIRE)): 設置JWT的過期時間為當前時間加上預定義的過期時間 EXPIRE。 //signWith(SignatureAlgorithm.HS256,APPSECRET): 使用HS256算法以及預定義的密鑰 APPSECRET 對JWT進行簽名 //compact(): 構建并返回JWT字符串表示形式 String token = Jwts.builder().setSubject(SUBJECT) .claim("id",user.getId()) .claim("name",user.getName()) .claim("img",user.getHeadImg()) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis()+EXPIRE)) .signWith(SignatureAlgorithm.HS256,APPSECRET) .compact(); return token; } /* * 校驗token * @param token * @return * */ public static Claims checkJWT(String token){ try{ final Claims claims = Jwts.parser().setSigningKey(APPSECRET) .parseClaimsJws(token) .getBody(); return claims; }catch(Exception e){} return null; } } ~~~ ### 編寫測試用例來進行校驗 ### ![](https://img.kancloud.cn/6e/2b/6e2b1098b38a98b318b3e87319683dbd_1494x984.png) ### 具體測試用例代碼如下所示: ### ~~~ package net.xdclass.xdvideo; import io.jsonwebtoken.Claims; import net.xdclass.xdvideo.domain.User; import net.xdclass.xdvideo.utils.JwtUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.Date; @RunWith(SpringRunner.class) @SpringBootTest public class JwtTestController { @Test public void testGeneJwt(){ User user = new User(); user.setId(999); user.setHeadImg("www.xdclass.net"); user.setName("xd"); String token = JwtUtils.geneJsonWebToken(user); System.out.println(token); } @Test public void testCheck(){ String token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4ZGNsYXNzIiwiaWQiOjk5OSwibmFtZSI6InhkIiwiaW1nIjoid3d3LnhkY2xhc3MubmV0IiwiaWF0IjoxNzExMTU3NDc2LCJleHAiOjE3MTE3NjIyNzZ9.r6n8MgcgjmeYfpwR_JKbBoNA2fSM4dNzihQY2s6v1ZQ"; Claims claims = JwtUtils.checkJWT(token); if(claims != null){ String name = (String) claims.get("name"); String img = (String) claims.get("img"); int id = (Integer) claims.get("id"); System.out.println(name + img + String.valueOf(id)); }else{ System.out.println("非法token"); } } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看