如何利用Token实现分布式Session?( 二 )


如何利用Token实现分布式Session?

文章插图
 
上面的token即用户信息是存储在客户端的,服务器端只要解码即可 。
十、JWT方式认证的好处
1、因为token存储在客户端,服务器只负责解码 。这样不需要占用服务器端资源 。
2、服务器端可以无限扩展,负载均衡器可以将用户传递到任何服务器,服务器都能知道用户信息,因为jwt里面包含了 。
3、数据安全,因为有签名,防止了篡改,但信息还是透明的,不要放敏感信息 。
4、放入请求头提交,很好的防止了csrf攻击,
说了这么多的好处,那是不是JWT就非常适合替换掉Session方式呢?
十一、JWT方式的坏处1、token失效问题
JWT方式最大的坏处就是无法主动让token失效,小伙伴们会说token不是有过期时间吗?是的,token本身是有过期时间,但token一旦发出,服务器就无法收回 。
如:一个jwt的token的失效时间是3天,但我们发现这个token有异常,有可能被人登录,那真实的用户可以修改密码 。但是即使修改了密码,那个异常的token还是合法的,因为3天的失效时间未到,我们服务器是没法主动让异常token失效 。
2、数据延时,不一致问题
还有个问题就是因为jwt中包含了用户的部分信息,如果这些部分信息修改了,服务器获取的还是以前的jwt中的用户信息,导致数据不一致 。
十二、总结小伙伴们怎么去选择Session的方式,是用传统的Sesion-Cookie服务器方式,还是用JWT方式,具体集合业务看 。不过老顾这里推荐还是用传统的方式,因为以后的业务很有可能会用到用户Session 。好了,谢谢!!!




推荐阅读