javaJWT工具类
时间: 2023-11-07 10:01:25 浏览: 146
Java是一个用于处理JSON Web Token(JWT)的Java工具类库。它提供了一组简单而强大的API,可以轻松地生成、解析和验证JWT。
使用JavaJWT,您可以轻松地创建一个JWT并将其序列化为字符串,也可以将接收到的JWT字符串解析为一个JWT对象,并验证其签名和有效性。
下面是一个使用JavaJWT创建和解析JWT的示例代码:
```java
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
// 创建JWT
Algorithm algorithm = Algorithm.HMAC256("your-secret");
String token = JWT.create()
.withClaim("userId", 123)
.withExpiresAt(new Date(System.currentTimeMillis() + 3600 * 1000)) // 设置过期时间为1小时
.sign(algorithm);
// 解析JWT
DecodedJWT jwt = JWT.require(algorithm).build().verify(token);
int userId = jwt.getClaim("userId").asInt();
```
相关问题
java jwt 工具类
以下是一个使用Java JWT工具类的示例:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class JwtUtils {
private static final String SECRET_KEY = "your-secret-key";
private static final long EXPIRATION_TIME = 3 * 1000L; // 3秒
public static String createJwt(Map<String, Object> claims) {
Date now = new Date();
Date expiration = new Date(now.getTime() + EXPIRATION_TIME);
return Jwts.builder()
.setClaims(claims)
.setIssuedAt(now)
.setExpiration(expiration)
.signWith(SignatureAlgorithm.HS256, SECRET_KEY)
.compact();
}
public static Claims parseJwt(String jwt) {
return Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(jwt)
.getBody();
}
}
public class Main {
public static void main(String[] args) {
// 创建JWT
Map<String, Object> claims = new HashMap<>();
claims.put("username", "zss");
String jwt = JwtUtils.createJwt(claims);
System.out.println(jwt);
// 解析JWT
Claims parseJwt = JwtUtils.parseJwt(jwt);
Date issuedAt = parseJwt.getIssuedAt();
Date expiration = parseJwt.getExpiration();
System.out.println("令牌签发时间:" + issuedAt);
System.out.println("令牌过期时间:" + expiration);
}
}
```
javajwt工具类
### Java JWT 工具类实现
为了创建一个用于处理 JSON Web Token (JWT) 的工具类,在Java应用程序中通常会涉及几个核心方法来生成和验证Token。下面是一个简单的 `JwtUtil` 类的实现,它能够满足基本需求。
#### JwtUtil.java
此文件定义了一个名为 `JwtUtil` 的公共类,其中包含了两个静态方法:一个是用来创建签名并返回完整的JWT字符串;另一个是用来解析传入的token,并从中提取出声明(claims)。如果提供的密钥不匹配,则抛出异常[^1]。
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
public class JwtUtil {
private static final String SECRET_KEY = "your_secret_key"; // 应该保存在一个安全的地方
/**
* 创建JWT.
*/
public static String createToken(String subject, long ttlMillis) {
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
return Jwts.builder()
.setSubject(subject)
.signWith(signatureAlgorithm, SECRET_KEY.getBytes())
.compact();
}
/**
* 解析JWT.
*/
public static Claims parseToken(String token) throws Exception{
return Jwts.parserBuilder().setSigningKey(SECRET_KEY.getBytes()).build().parseClaimsJws(token).getBody();
}
}
```
上述代码片段展示了如何利用 `io.jsonwebtoken` 库中的API构建自定义的JWT实用程序。这里需要注意的是,实际应用时应考虑更多因素,比如过期时间设置、加密算法的选择以及更复杂的payload结构等。
对于Spring Boot项目而言,还可以进一步封装这些逻辑到特定的服务层组件里去,并通过配置文件管理一些参数如secret key 和 expiration time等等[^2]。
阅读全文
相关推荐

















