单点登录和分布式登入用户状态储存

session

http协议是面向无状态无连接的,所以当用户登入之后需要用session记录用户的登入状态,服务端储存一个session,用户端也存放一个cookie,其中存放sessionID

当用户再次访问时,根据session可以判断用户登录状态以及用户信息。

在单点登录状态下,只有一台服务器。

当多台服务器出现时,会出现nginx来进行分发请求,进行负载均衡,就会出现问题,此时一个服务器存储着用户的session,而其他服务器没有存储用户的session。当用户请求过来时,通过nginx将不同用户的请求分发到不同的服务器上面,此时就会出现其他服务器没有用户session。

解决办法:

一,session黏贴:将对应客户端ip的请求只打到对应的服务器。缺点:分布式系统的好处就在于,一台服务器挂了可以把请求打到其他服务器上面。这样的话,这台服务器挂了,这个客服端的登入信息就会消失。

二,将session同步到其他服务器上。缺点:可能出现同步不及时,此时用户请求已经过来,但是这个服务器还没有同步过来,将会出现判断用户未登入。而重新生成新的session。这时复制的session也过来了,就会出现session混乱、

三,将session放到redis上面集中存储。缺点:服务器越来越多,造成redis压力很大

基于无状态的token方式

有用户请求请求到nginx,nginx将请求放到服务器上面,在服务器上面登录后会生成一个token,这个token会保存用户的全部信息,将这个token返回给用户,这样不在服务器上面存放用户信息,服务器的状态变化就对用户没有影响

缺点:用户信息全部放在用户端,可能会造成用户信息的泄露。
网络传输不安全可能会造成用户信息的泄露
解决办法:中间加一个层

综上
单点登入会选择session
分布式情况会选择token

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值