springBoot jwt 生成不过期的token
时间: 2023-08-29 14:10:31 浏览: 443
要生成一个不过期的 JWT token,你可以在创建 JWT token 时设置一个较大的过期时间或者设定一个永不过期的时间戳。下面是使用 Spring Boot 和 jjwt 库生成不过期的 JWT token 的示例代码:
首先,确保你已经在项目中添加了 jjwt 依赖。在 Maven 中,你可以在 pom.xml 文件中添加以下依赖:
```xml
<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>
```
接下来,你可以使用以下代码生成一个不过期的 JWT token:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtUtil {
private static final String SECRET_KEY = "yourSecretKey";
private static final long EXPIRATION_TIME = 86400000; // 设置为24小时
public static String generateToken(String username) {
Date now = new Date();
Date expiryDate = new Date(now.getTime() + EXPIRATION_TIME);
return Jwts.builder()
.setSubject(username)
.setIssuedAt(now)
.setExpiration(expiryDate)
.signWith(SignatureAlgorithm.HS512, SECRET_KEY)
.compact();
}
public static Claims getClaimsFromToken(String token) {
return Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(token)
.getBody();
}
// 校验token是否过期
public static boolean isTokenExpired(String token) {
Date expiration = getClaimsFromToken(token).getExpiration();
return expiration.before(new Date());
}
}
```
在上述代码中,`generateToken` 方法用于生成一个不过期的 JWT token,`getClaimsFromToken` 方法用于从 token 中获取 claims,`isTokenExpired` 方法用于判断 token 是否过期。
请注意,为了保证安全性,你需要将 `SECRET_KEY` 替换为一个真实的密钥,并且仔细考虑过期时间的设置。此示例中的过期时间设置为 24 小时(86400000 毫秒)。
这样,你就可以使用上述代码生成一个不过期的 JWT token。希望对你有所帮助!如果有任何问题,请随时提问。
阅读全文