• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
mysnsds
帮助1

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbhaec
系列文章
更多 icon
同类精品
更多 icon
继续加载