JWT java 设置过期时间
2023-12-17 12:01:00
实现 JWT Java 设置过期时间简介
我们经常需要在开发中使用它 JWT(Json Web Token)实现身份验证和授权功能。JWT 是开放标准(RFC 7519)定义了在不同系统之间传递信息的简单、自包含的方法。在使用 JWT 为了提高安全性,我们通常会设置一个过期时间进行身份验证。本文将介绍如何在这里 Java 中使用 JWT 设置过期时间。
实现步骤下面是实现 JWT Java 设置过期时间的步骤可以用表格显示:
接下来,我们将详细介绍每个步骤需要做什么,以及需要使用的代码和代码注释。
导入相关依赖库首先,我们需要引入相关的依赖库,以便在 Java 中使用 JWT。可使用以下内容 Maven 依赖:
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version></dependency>
创建一个 JWT 生成工具类接下来,我们可以创建一个 JWT 用于生成和验证生成工具 JWT。您可以使用以下代码创建一个名称 JwtUtils 的类:
import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import java.util.Date;public class JwtUtils { private static final String SECRET_KEY = "your-secret-key"; public static String generateToken(String subject, long expirationTimeMillis) { Date now = new Date(); Date expirationDate = new Date(now.getTime() + expirationTimeMillis); return Jwts.builder() .setSubject(subject) .setIssuedAt(now) .setExpiration(expirationDate) .signWith(SignatureAlgorithm.HS256, SECRET_KEY) .compact(); } public static boolean validateToken(String token) { try { Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token); return true; } catch (Exception e) { return false; } } public static Claims getClaimsFromToken(String token) { return Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody(); }}
在上述代码中,我们使用它 jjwt 生成和验证图书馆 JWT。在 generateToken 我们设置了方法 JWT 的主题(subject)、签发时间(issuedAt)和过期时间(expiration),并使用 SECRET_KEY 对 JWT 进行签名。在 validateToken 我们已经验证了方法 JWT 的有效性。在 getClaimsFromToken 在方法中,我们得到它 JWT 中的信息。
设置 JWT 的过期时间下一步,我们需要设置 JWT 过期时间。过期时间可以用以下代码设置:
long expirationTimeMillis = 3600000; // 设置过期时间为 1 小时
在这个例子中,我们将过期时间设置为 1 小时,即 3600000 毫秒。
生成 JWT接下来,我们可以用它 JwtUtils.generateToken 方法生成 JWT。可以使用以下代码生成 JWT:
String token = JwtUtils.generateToken("user_id", expirationTimeMillis);
在这个例子中,我们将主题设置为 "user_id",并将过期时间设置为以前设定的过期时间。
验证 JWT 的有效性最终,我们可以使用它 JwtUtils.validateToken 方法验证 JWT 有效性。可使用以下代码进行验证 JWT:
boolean isValid = JwtUtils.validateToken(token);
在这个例子中,我们验证了以前生成的 JWT 将结果存储在有效性中 isValid 变量中。
序列图以下是使用序列图来表示上述步骤的过程:
sequenceDiagram participant Developer as 开发者 participant Beginner as 刚入行的小白 Developer->>Beginner: 介绍实现 JWT Java 设置过期时间步骤 Developer->>Beginner: 导入相关依赖库 Developer->>Beginner: 创建一个 JWT 生成工具类 Developer->>Beginner: 设置 JWT 的过期时间 Developer->>Beginner: 生成