有关session和cookie的相关问题

  1. 分布式session的几种实现方式:
    Session Replication方式管理(即session复制)
    a.简介:将一台机器上的Session数据广播复制到集群中其余机器上。
    b.使用场景:机器较少,网络流量较小。
    c.实现简单、配置较少、当网络中有机器宕掉时不影响用户访问。
    d.广播复制到其余机器有一定延时,带来一定网络开销。
    Session Sticky方式管理
    a.简介:即粘性Session、当用户访问集群中某台机器后,强制指定后续所有请求均落到此机器上
    b.使用场景:机器数量适中、对稳定性要求不是非常苛刻。
    c.优点:实现简单、配置方便、没有额外网络开销。
    d.缺点:网络中有机器宕掉时,用户session会丢失,容易造成单点故障。
    缓存集中式管理
    a.简介:将session存入分布式缓存集群中的某台机器上,当用户访问不同节点时先从缓存中拿Session信息。
    b.集群中机器数多,网络环境复杂。
    c.优点:可靠性好。
    d.缺点:实现复杂、稳定性依赖于缓存的稳定性,Session信息放入缓存时要有合理的策略写入。

  2. sso 跨域认证实现:

  • 整体设计思想:登陆成功之后产生唯一票据ticket 写入到cookie中返回给客户端 用户信息压入session中,session中的信息存入数据库sso_user_session表中。

  • session实现共享:通过http请求会话级别的session 服务器端通过票据查询数据库获取所有信息,把信息返回给该请求对应的应用级别session,从而实现共享。

  • cookie不支持跨域解决方案:专门对于跨域进行添加一个跨域认证的标识,配置 整个系统进行登录的入口地址,发现需要进行跨域认证的时候 向登录的地址重定向(专门配置的safeChecker) 发送请求 ,此时可以使用原来的session从中获取到票据,再次重定向第三方的安全更新请求(safetyInfoUpdater)根据传递过来的ticket 可以获取到数据库里的一切信息。

猜你喜欢

转载自blog.csdn.net/wzr0823/article/details/84998326