SSO(single sign on)模式 单点登录

什么是单点登录:

        类似于百度的页面首页,等登录了百度账号,切换到百度贴吧,百度地图等百度其他功能,会默认登录,这就叫单点登录。

        以上例子如下图:

单点登录的三种常见方式:

一:session广播机制实现(早期使用)

        以百度举例,百度首页登录百度账号,存储session,然后复制到百度贴吧跟百度网盘模块中,在每个模块中都有你登录之后的session对象,做一个session复制,这样我们的一个登录就可以做到。

        但这种方式有很多缺点,对于早期项目,模块不多,使用这种方式没什么问题,但是如果我们项目中有几十个模块,那我们这个session就要复制几十次,每次复制都会对我们的资源造成极大的消耗,同时因为复制的每个session都相同,会造成数据重复,浪费空间,所以这个方法并不适合多模块项目。

二:使用cookie+redis实现

        cookie:客户端技术,客户端每次发送请求都会带着cookie进行发送

        redis:内存数据库,读取速度快,基于key-value存储数据

实现方法:

        在项目的任何一个模块中进行登录,登录之后,把数据放大两个地方

        redis在key中生成唯一随机值(ip,用户id),在value存放用户的数据,将cookie里面生成的key值放入cookie中,项目其他模块发送请求带着cookie进行发送,获取cookie的value值,实现单点登录(把cookie获取的唯一值,到redis进行查询,根据key进行查询,如果有数据,就代表已经登录)。

        

三:使用token实现(令牌)

        token:按照一定规则生成字符串,字符串中包含用户的信息

实现方式:

        1.在项目中某个模块登录之后,按照规则生成字符串,把登录之后的用户包含到生成字符串中,把字符串返回,可以把字符串通过cookie返回,也可以把字符串通过地址栏进行返回。

        2.再去访问项目中其他模块,每次访问在地址栏带着生成字符串,在访问模块里面获取地址栏中的字符串,根据字符串获取用户信息。

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图一乐QI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值