91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot中JWT令牌生成與驗證

發布時間:2024-11-15 12:10:02 來源:億速云 閱讀:93 作者:小樊 欄目:編程語言

在Spring Boot中,我們可以使用Java JWT(JSON Web Token)庫來生成和驗證JWT令牌。一個流行的庫是jjwt(Java JWT)。下面是如何在Spring Boot項目中使用jjwt庫生成和驗證JWT令牌的步驟:

  1. 添加依賴

在你的pom.xml文件中添加jjwt庫的依賴:

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-api</artifactId>
    <version>0.11.2</version>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-impl</artifactId>
    <version>0.11.2</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-jackson</artifactId>
    <version>0.11.2</version>
    <scope>runtime</scope>
</dependency>
  1. 生成JWT令牌

首先,我們需要創建一個Java類來表示JWT令牌的載荷(claims)。例如,我們可以創建一個User類:

public class User {
    private String username;
    private String role;

    // Getters and setters
}

接下來,我們可以創建一個JwtUtil類來生成JWT令牌:

import io.jsonwebtoken.*;
import java.util.Base64;
import java.util.Date;

public class JwtUtil {

    private static final String SECRET_KEY = "yourSecretKey"; // 用于簽名和驗證JWT令牌的密鑰
    private static final long EXPIRATION_TIME = 86400000; // JWT令牌的過期時間(毫秒)

    public static String generateToken(User user) {
        return Jwts.builder()
                .setSubject(user.getUsername()) // 將用戶名作為令牌的subject
                .claim("role", user.getRole()) // 將用戶角色作為額外的claims
                .setIssuedAt(new Date()) // 設置令牌的發行時間
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) // 設置令牌的過期時間
                .signWith(SignatureAlgorithm.HS512, SECRET_KEY) // 使用HS512算法和密鑰進行簽名
                .compact();
    }
}
  1. 驗證JWT令牌

要驗證JWT令牌,我們需要創建一個JwtController類來處理登錄和驗證令牌的請求:

import io.jsonwebtoken.*;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class JwtController {

    @PostMapping("/login")
    public String login(@RequestBody User user) {
        // 在這里,你可以根據需要驗證用戶的憑據(例如,檢查用戶名和密碼)
        // 如果驗證成功,使用JwtUtil生成JWT令牌并返回給客戶端
        return JwtUtil.generateToken(user);
    }

    @GetMapping("/validate")
    public String validateToken(@RequestHeader("Authorization") String token) {
        try {
            Jws<Claims> jws = Jwts.parser()
                    .setSigningKey(SECRET_KEY)
                    .parseClaimsJws(token);

            // 驗證成功,返回用戶名
            return jws.getBody().getSubject();
        } catch (JwtException e) {
            // 驗證失敗,拋出異常或返回錯誤信息
            throw new RuntimeException("Invalid JWT token");
        }
    }
}

現在,當用戶登錄時,服務器將生成一個JWT令牌并返回給客戶端。客戶端需要在后續請求的Authorization頭中包含此令牌。服務器將驗證令牌并返回相應的用戶信息。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗源县| 克什克腾旗| 南江县| 郁南县| 扎赉特旗| 横峰县| 周宁县| 石渠县| 东乡族自治县| 平顶山市| 抚顺市| 马龙县| 宜丰县| 务川| 韶山市| 双城市| 华宁县| 油尖旺区| 射阳县| 开江县| 体育| 斗六市| 定兴县| 长宁区| 分宜县| 南通市| 鄂尔多斯市| 禹城市| 东乌珠穆沁旗| 崇左市| 龙海市| 潞城市| 房山区| 乐都县| 海阳市| 客服| 西林县| 柳河县| 罗平县| 南通市| 宝鸡市|