前后端分离,JWT token 校验token 过期,结合redis实现

在登录接口中 如果校验账号密码成功 则根据用户id和用户类型创建jwt token(有效期设置为-1,即永不过期),得到A
更新登录日期(当前时间new Date()即可)(业务上可选),得到B
在redis中缓存key为ACCESS_TOKEN:userId:A(加上A是为了防止用户多个客户端登录 造成token覆盖),value为B的毫秒数(转换成字符串类型),过期时间为7天(7 * 24 * 60 * 60)

//生成token
        JSONObject signParams = new JSONObject();
        signParams.put("userId",sysUserAccount.getId());
        signParams.put("userName",sysUserAccount.getName());
         String token = getToken(signParams);
        //拼装key
        StringBuilder accessToken = new StringBuilder("access_token_");
        //缓存token信息 天
        accessToken.
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
JWTRedis 都可以用于实现 Token 校验,但具体的实现方式有所不同,下面分别介绍一下它们的优劣。 JWT 实现 Token 校验的优点: 1. 无状态:JWT 实现 Token 校验时不需要在服务器端存储任何信息,这样可以减轻服务器的负担,提高系统的性能。 2. 轻量级:JWT Token 的体积较小,可以减少网络传输的开销。 3. 可扩展性:JWT 可以很容易地与其他技术集成,如 OAuth、SAML 等,可以实现单点登录和跨域身份验证。 JWT 实现 Token 校验的缺点: 1. 无法注销:一旦颁发了 JWT,就无法撤回或注销,除非等到 JWT 过期或更改密钥。 2. 密钥管理困难:JWT 的安全性依赖于密钥的保护,如果密钥泄露或被攻击者获取,就可能会导致系统的安全问题。 3. 数据量较大:由于 JWT 包含了用户信息和签名等信息,因此数据量较大,可能会影响网络传输的性能。 Redis 实现 Token 校验的优点: 1. 数据存储在内存中:Redis 的数据存储在内存中,可以快速地对 Token 进行校验。 2. 高可用性:Redis 支持数据复制和故障转移,可以保证系统的高可用性。 3. 可扩展性:Redis 支持分布式部署和数据复制,可以实现数据的高可用和扩展性。 Redis 实现 Token 校验的缺点: 1. 数据存储成本高:Redis 的数据存储在内存中,如果数据量过大,可能会导致内存不足的问题。 2. 数据持久化成本高:Redis 的数据持久化可能会影响系统的性能,尤其是在大数据量或高并发的情况下。 3. 高可用性需要额外配置:Redis 的高可用性需要额外的配置和维护,可能会增加运维的成本。 综上所述,JWTRedis 都有其优点和缺点,具体的选择应根据具体的场景和需求进行考虑。如果需要实现无状态的 Token 校验并且数据量较小,可以考虑使用 JWT;如果需要实现高可用的 Token 校验并且数据量较大,可以考虑使用 Redis
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值