Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java jwt

作者:我在坚强也需要有人疼   发布日期:2025-03-15   浏览:65

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import javax.crypto.SecretKey;

public class JwtExample {

    // 生成JWT Token
    public static String createToken(String subject) {
        SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256); // 创建密钥
        String compactJws = Jwts.builder()
                .setSubject(subject) // 设置主题(通常是用户ID或用户名)
                .signWith(key) // 使用密钥进行签名
                .compact(); // 生成紧凑的JWT字符串
        return compactJws;
    }

    // 验证JWT Token
    public static boolean validateToken(String token, SecretKey key) {
        try {
            Jwts.parserBuilder()
                    .setSigningKey(key) // 设置用于验证的密钥
                    .build()
                    .parseClaimsJws(token); // 解析并验证JWT
            return true;
        } catch (Exception e) {
            return false; // 如果解析失败,返回false
        }
    }

    public static void main(String[] args) {
        String subject = "user123";
        SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256);

        // 创建Token
        String token = createToken(subject);
        System.out.println("Generated JWT: " + token);

        // 验证Token
        boolean isValid = validateToken(token, key);
        System.out.println("Is JWT valid? " + isValid);
    }
}

解释说明:

  1. 创建JWT Token

    • createToken 方法使用 Jwts.builder() 来构建一个JWT,并设置主题(通常是用户ID或用户名),然后使用 signWith 方法和密钥进行签名,最后通过 compact() 方法生成紧凑的JWT字符串。
  2. 验证JWT Token

    • validateToken 方法使用 Jwts.parserBuilder() 来解析和验证JWT。它会检查签名是否有效,并返回一个布尔值表示验证结果。
  3. 主函数

    • main 方法中,首先创建了一个JWT Token,然后打印出来。接着,调用 validateToken 方法来验证这个Token,并打印验证结果。

依赖库:

你需要在项目中添加 jjwt 库的依赖,例如在Maven项目中可以添加以下依赖:

<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>

上一篇:java super

下一篇:java object转map

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站