在用户登录之后会将用户用户id 登录ip 通过一些算法加密
加密之后将用户token写入数据库并且写入缓存 (redis)
写入缓存的目的是每次客户端请求要获取用户id 写入数据库是想在用户做了修改密码之类的操作 将token清空
但是写入缓存是 1 个小时 redis在到期之后就没了 如何做到到期之后可以继续使用
自己有一个思路 就是如果在缓存中查询不到就去数据库查询 数据库中查询到了直接返回再次写入缓存
但是这种实现的方式好像不太好 各位大神有什么好的办法吗?
在用户登录之后会将用户用户id 登录ip 通过一些算法加密
加密之后将用户token写入数据库并且写入缓存 (redis)
写入缓存的目的是每次客户端请求要获取用户id 写入数据库是想在用户做了修改密码之类的操作 将token清空
但是写入缓存是 1 个小时 redis在到期之后就没了 如何做到到期之后可以继续使用
自己有一个思路 就是如果在缓存中查询不到就去数据库查询 数据库中查询到了直接返回再次写入缓存
但是这种实现的方式好像不太好 各位大神有什么好的办法吗?
应该有两个token,一个是access_token,一个是refresh_token,同时返回给客户端,但是有差别。
1.过期时间不一样,access_token过期时间应该设置短一点,比如1个小时,refresh_token过期时间相对长一点,比如一周。
2.access_token是用户的凭证,1个小时候就过期了,过期之后只能用refresh_token去重新获取一对新的token,refresh_token只能使用一次。
你说的方法针对小型站点可行,但是对于大型网站,当大量用户缓存过期的时候,大量的请求会进入数据库,所以并不可取.我的解决方法是,生成token时,假设token有效期为24小时,同时把用户id和token过期时间放入消息队列中,这个消息队列会一直循环检测token即将过期的用户,一旦检测到token不足2小时就会过期,则立即重新生成新的token.如果网站用户特别多,考虑把前面的token有效期和2小时适度调大一些,或者考虑分布式消息队列方案.另外,token更新频繁,完全没有存库的必要..............................好了,我编不下去了............
2 回答1.3k 阅读✓ 已解决
2 回答3k 阅读
2 回答824 阅读✓ 已解决
1 回答905 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答882 阅读
1 回答873 阅读
接口中的 token 刷新机制。
这个更新令牌 可能会帮到你