评论
0/240
- 程序员soulmate可以都存在Redis,一个AccessToken和一个RefreshToken,然后AccessToken的时长一般2个小时,RefreshToken就可以设置为1-3天,当AccessToken过期Redis查不到的时候,就用RefreshToken重新生成新的返回到响应体,前端自动替换,这里会有并发问题,所以当AccessToken需要再续上1-3分钟的有效时长,这样就完美的替换掉了原来的AccessToken和RefreshToken2024-05-24 20:58 回复
- 拉大锯 回复 @程序员soulmate这样不好,redis的资源要比mysql的贵的,速度也是。这就是为什么做一个2小时的token。而refresh的调用频率比较低,所以持久化到硬盘上。2024-05-24 22:00 回复 1153952789488054272
- ccTyL话说在jwt存用户信息的都是少数吧,目前看各大网站的jwt都不会特别长2024-05-24 08:10 回复
- 拉大锯 回复 @ccTyL看场景,主要是无状态,又携带信息,还是防止篡改。必要的场景会使用。2024-05-24 10:09 回复 1153952789488054272
- ccTyL我们都是jwt+redis一起用的,通常都不会在token带太多信息,一般都是放个id,然后网关在redis查询。如果退出登陆就清除redis,这样即使jwt没过期也不能登陆2024-05-24 08:09 回复
- 拉大锯 回复 @ccTyL那就不需要jwt了呀。你还要解码,你直接把对象转成json存redis里不就可以了。2024-05-24 10:08 回复 1153952789488054272
- ccTyL 回复 @拉大锯还是要jwt的呀,主要是防止篡改,以及一个过期问题。确实是把json存在redis的,只是key使用的是用户id2024-05-24 11:12 回复 1314408005793603584
- 拉大锯 回复 @ccTyL过期,你直接用redis的过期不就可以了?拿不到就是过期了呀。2024-05-24 11:21 回复 1153952789488054272
- ccTyL 回复 @拉大锯不一样的,jwt的过期,说明是长时间未登陆的过期(配合refreshtoken)。redis取不到,可能是主动注销,或者异地登陆被挤下线。所以是两种情况2024-05-24 11:48 回复 1314408005793603584
- 拉大锯 回复 @ccTyL你没看文章吧?我把refresh的作用换了另外一种方式实现。本质上就是你的内容里带了时间,只是你用工具去解析,超过了时间给你抛异常而已。你自己也可以做这些动作的。2024-05-24 13:09 回复 1153952789488054272
- ccTyL 回复 @拉大锯我再细看一下2024-05-24 16:20 回复 1314408005793603584
推荐文章
2020-03-21 04:44 2