还有人不知道单点登录?

还有人不知道单点登录?

单点登录 SSO(single sign on) : 用户只需要登录一次,就可以访问平台其他系统,避免了多次登录、多次注册以及验证权限,提升了用户体验。

普通登录:一个系统必须登录一次,通过用户名查询用户密码是否正确,正确则将用户信息写入session,客户端请求的时候把session传给服务端,服务端判断是否是登录状态。

项目后期,系统越来越多,每次都要登录,且每个系统的账号密码不统一,用户体验会越来越差,单点登录则是迎合现在的需求而来

可实现单点登录的方法

  1. 共享父域名下的cookie ,(这种方式不支持跨主域名

    a. cookie 的作用域是由domain以及path属性决定的。
    b. 已知子域可以共享父域cookie ,如果把cookie放置在父域下,cookie可以被所有的子域共享, 比如 fanyi.baidu.com 以及map.baidu.com 都可以访问baidu.com 下设置的cookie , 只需要把cookepath 设置为 /即可。
    c. 条件:平台上的系统处在同一个父域名下,就可以利用cookie 实现单点登录了

  2. 使用统一的登录认证平台 (方式相对复杂,支持跨域、扩展性好,是单点登录的标准做法)

    1. 部署一个认证登录平台,专门服务处理登录请求的独立web服务。
    2. 用户统一在登录平台登录,登录成功后,平台记录用户的登录状态
    3. 流程如下:
      a. 用户登录系统时,会进行token验证,没有token或者token失效会跳转到统一登录认证平台去登录。验证成功的话直接放行。
      b. 在登录成功后,平台记住登录状态,并且带着token重定向到访问的系统(token拼接在url后面)。
      c. 这时候,系统再次拿着token去验证,成功后就放行,
      d. 这个时候通过该系统访问另外一个系统,则需要token拼接到url后,跳转这个拼接后的链接,这个时候会重复以上步骤
  3. LocalStorage 跨域

    单点登录的关键在于,如何让 Session Id(或 Token)在多个域中共享。但是 Cookie 是不支持跨主域名的,而且浏览器对 Cookie 的跨域限制越来越严格。

    在前后端分离的情况下,完全可以不使用 Cookie,我们可以选择将 Session Id (或 Token )保存到浏览器的 LocalStorage 中,让前端在每次向后端发送请求时,主动将 LocalStorage 的数据传递给服务端。这些都是由前端来控制的,后端需要做的仅仅是在用户登录成功后,将 Session Id (或 Token )放在响应体中传递给前端。

    在这样的场景下,单点登录完全可以在前端实现。前端拿到 Session Id (或 Token )后,除了将它写入自己的 LocalStorage 中之外,还可以通过特殊手段将它写入多个其他域下的 LocalStorage 中。

    总结:此种实现方式完全由前端控制,几乎不需要后端参与,同样支持跨域。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值