最近在看token方面的文章,发现一个很有意思的事情就是大家很多时候会用redis来存储用户的登录信息,但是为什么呢?按照我的理解,服务端只需要对客户端发送过来的用户信息重新生成的token值和客户端携带过来的token值进行比对运算就可以了。为什么还是需要一个中间库对用户信息进行一个存储呢?
最近在看token方面的文章,发现一个很有意思的事情就是大家很多时候会用redis来存储用户的登录信息,但是为什么呢?按照我的理解,服务端只需要对客户端发送过来的用户信息重新生成的token值和客户端携带过来的token值进行比对运算就可以了。为什么还是需要一个中间库对用户信息进行一个存储呢?
1、token具有时效性,redis处理有优势。
2、在API领域,由于请求数比较多,redis也有优势。
3、登录信息一般不需要长效储存,所以可以减少DB的压力,直接用redis.
还有其他的看项目情形来定
我发现上面的回答都没有说到题主关注的这个点上。
其中最要的一个场景就是密码或token泄露后,客户修改了密码后要能使其他已登录的客户端立即下线的功能。
后端就必须通过后端存储的token校验它是否失效。而不是等token自己过期来失效。
参考 https://segmentfault.com/q/10...
6 回答2.8k 阅读✓ 已解决
8 回答3.5k 阅读
2 回答2.4k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
4 回答1.9k 阅读
首先,引入一个中间件管理token就避免了单点问题,对于分布式系统来说,不管你是哪一台服务处理的用户请求,我都是从redis获取的token。其次,redis的响应速度非常快,如果不出现网络问题,基本上是毫秒级别相应。第三,对于token来说,是有时效性的,redis天然支持设置过期时间以及通过一些二方包提供的API到达自动续时效果。个人感觉,主要就三方面原因吧。