java判断jwt是否过期的代码
时间: 2023-07-08 11:24:05 浏览: 104
可以使用以下代码来判断 Java 中的 JWT 是否过期:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
public class JwtUtil {
private static final String SECRET_KEY = "yourSecretKey"; // JWT 密钥
public static boolean isExpired(String jwtToken) {
Claims claims = Jwts.parser()
.setSigningKey(SECRET_KEY)
.parseClaimsJws(jwtToken)
.getBody();
long expiration = claims.getExpiration().getTime();
return expiration < System.currentTimeMillis();
}
}
```
在上面的代码中,我们使用了 `io.jsonwebtoken` 库来解析 JWT,然后获取 JWT 中的过期时间戳,最后与当前时间戳进行比较,判断 JWT 是否过期。如果返回值为 `true`,则表示 JWT 已过期;否则,JWT 未过期。
相关问题
java jwt如何获取有效时间
在 Java 中使用 JWT(JSON Web Token)获取有效时间可以通过解析 JWT 中的 payload 部分来获取。JWT 通常由三部分组成:header、payload 和 signature。
Payload 部分是一个 JSON 对象,其中包含了有关 token 的信息,包括有效时间。payload 中的标准字段包括 "exp"(过期时间)字段,它表示 token 的有效期。可以通过解析 payload 来获取该字段的值。
下面是一个示例代码,演示了如何使用 Java JWT 库(如 jjwt)来解析 JWT 并获取有效时间:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
public class JWTUtil {
public static void main(String[] args) {
String jwtToken = "your_jwt_token_here";
// 解析 JWT
Claims claims = Jwts.parser().parseClaimsJws(jwtToken).getBody();
// 获取过期时间
long expirationTimeMillis = claims.getExpiration().getTime();
// 转换为可读的日期时间格式
String expirationTime = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new java.util.Date(expirationTimeMillis));
System.out.println("Token 过期时间:" + expirationTime);
}
}
```
请注意,上述示例代码中使用了 jjwt 库,你需要在项目中引入该库的依赖。
通过解析 JWT 并获取有效时间,你可以根据需要进行进一步的处理,例如判断是否过期或计算剩余有效时间。
springBoot jwt 生成不过期的token
要生成一个不过期的 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。希望对你有所帮助!如果有任何问题,请随时提问。
阅读全文