Java如何设置token过期

在开发中,为了保障系统安全性,通常会对用户的token进行过期设置,以防止恶意用户持续访问系统资源。本文将介绍如何在Java中设置token的过期时间。

1. 使用JWT实现token过期设置

JWT(JSON Web Token)是一种用于在网络应用间传递信息的基于JSON的开放标准。我们可以使用JWT来生成token并设置过期时间。

1.1 添加依赖

首先需要在项目中添加JWT的依赖,可以在pom.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>

1.2 生成token并设置过期时间

接下来,我们可以使用JWT来生成token并设置过期时间。以下是一个简单的示例代码:

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class TokenUtil {
    
    private static final String SECRET_KEY = "yourSecretKey";
    private static final long EXPIRATION_TIME = 86400000; // 设置token过期时间为一天

    public static String generateToken(String username) {
        Date expirationDate = new Date(System.currentTimeMillis() + EXPIRATION_TIME);
        return Jwts.builder()
                .setSubject(username)
                .setExpiration(expirationDate)
                .signWith(SignatureAlgorithm.HS512, SECRET_KEY)
                .compact();
    }
}

在上面的代码中,我们使用Jwts.builder()方法来生成token,并通过setExpiration()方法设置token的过期时间为一天。你可以根据实际需求修改过期时间。

2. 验证token是否过期

在用户每次请求接口时,需要验证token是否过期。以下是一个简单的示例代码:

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

public class TokenUtil {
    
    private static final String SECRET_KEY = "yourSecretKey";

    public static boolean isTokenExpired(String token) {
        Claims claims = Jwts.parser()
                .setSigningKey(SECRET_KEY)
                .parseClaimsJws(token)
                .getBody();
        
        return claims.getExpiration().before(new Date());
    }
}

在上面的代码中,我们使用isTokenExpired()方法来验证token是否过期。如果token过期,则返回true,否则返回false

3. 甘特图

以下是一个简单的甘特图,展示了token的生成和验证流程:

gantt
    title Token过期设置流程
    dateFormat  YYYY-MM-DD

    section 生成Token
    生成token: 2022-01-01, 1d

    section 验证Token
    验证token: 2022-01-02, 1d

结论

通过以上步骤,我们可以使用JWT来生成token并设置过期时间,同时验证token是否过期。这样可以有效地保护系统资源,提高系统安全性。希望本文对你有所帮助!