java 使用jwt的代码示例
时间: 2023-08-04 16:24:37 浏览: 132
下面是一个简单的 Java 代码示例,演示如何使用 JWT(JSON Web Token)。
首先,需要使用 Java JWT 库,该库提供了创建和验证 JWT 的 API。可以使用 Maven 或 Gradle 将该库添加到项目中。
```xml
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.18.1</version>
</dependency>
```
接下来,可以使用以下代码创建和验证 JWT。
```java
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Date;
public class JwtUtils {
// JWT 有效期为 1 小时
private static final long EXPIRATION_TIME = 60 * 60 * 1000;
// JWT 密钥
private static final String SECRET = "my-secret";
/**
* 创建 JWT
*
* @param userId 用户 ID
* @return JWT
*/
public static String createToken(long userId) {
// JWT 过期时间
Date expireDate = new Date(System.currentTimeMillis() + EXPIRATION_TIME);
// 构造 JWT
return JWT.create()
.withClaim("userId", userId)
.withExpiresAt(expireDate)
.sign(Algorithm.HMAC256(SECRET));
}
/**
* 验证 JWT
*
* @param token JWT
* @return 是否验证通过
*/
public static boolean verifyToken(String token) {
try {
DecodedJWT jwt = JWT.require(Algorithm.HMAC256(SECRET)).build().verify(token);
// 验证通过
return true;
} catch (JWTVerificationException e) {
// 验证失败
return false;
}
}
/**
* 获取 JWT 中的用户 ID
*
* @param token JWT
* @return 用户 ID
*/
public static long getUserId(String token) {
DecodedJWT jwt = JWT.decode(token);
return jwt.getClaim("userId").asLong();
}
}
```
上述代码定义了一个 JwtUtils 类,其中包含三个方法:
1. `createToken(long userId)`:创建 JWT,其中 userId 是用户 ID。
2. `verifyToken(String token)`:验证 JWT,其中 token 是 JWT。
3. `getUserId(String token)`:从 JWT 中获取用户 ID,其中 token 是 JWT。
需要注意的是,上述代码中的密钥 "my-secret" 应该替换为一个更安全的密钥。此外,可以根据需要修改 JWT 的有效期和其他声明。
阅读全文