一种方法是使用JWT(JSON Web Token)来实现token失效。JWT是一种安全的身份验证机制,它可以在token中包含一些额外的信息,如过期时间。当客户端请求时,服务器会验证token是否过期,如果过期则拒绝请求。

下面是一个简单的示例代码:

  1. 添加依赖
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>
  1. 生成JWT token
public String generateToken(String userId) {
    return Jwts.builder()
            .setSubject(userId)
            .setExpiration(new Date(System.currentTimeMillis() + 3600000)) // 1 hour
            .signWith(SignatureAlgorithm.HS512, "secret")
            .compact();
}
  1. 验证token是否有效
public boolean validateToken(String token) {
    try {
        Jwts.parser().setSigningKey("secret").parseClaimsJws(token);
        return true;
    } catch (Exception e) {
        return false;
    }
}

在logout方法中,可以调用invalidateToken方法来让token失效:

public void logout(HttpServletRequest request) {
    String token = request.getHeader("token");
    invalidateToken(token);
}

public void invalidateToken(String token) {
    // do nothing, token will automatically expire
}

使用JWT来实现token失效的好处是不需要在服务器端存储token,只需要在生成token时设置过期时间即可。缺点是如果需要立即让token失效,需要等到token过期才能生效


原文地址: https://www.cveoy.top/t/topic/eRc8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录