关于cookie和session的一些理解

cookie和session工作流程

cookie流程如下:
当用户第一次访问某网站进行登录时,服务端会通过response.addCookie()创建一个cookie并返回到客户端,客户端将cookie保存在本地;当浏览器关闭时,未设定超时时间以及未持久化到本地磁盘的cookie将会销毁
session流程如下
用户访问浏览器,浏览器将用户信息提交到服务器,服务器调用request.getSession()方法,产生session对象,每个session都有一个独立的sessionid,服务器会以sessionid为键,session对象为值将其储存在map集合中,并将sessionid保存在cookie中返回给客户端,当用户再次访问时,会将携带sessionid的cookie发送给服务器进行验证

cookie和session的异同

相同点:两者都是用来保存用户信息
不同点:
cookie是将用户信息保存在客户端,大小限制为4k,安全性不高,当浏览器关闭时,为设定超时时间以及未持久化到磁盘的cookie会销毁
session是将用户信息保存到服务器端,大小理论上没有限制,安全性较高;服务器默认超时时间为30分钟,session不会因为浏览器的关闭为销毁,但浏览器的关闭会导致携带sessionId的cookie销毁.

session和单点登录

session在分布式中的作用
由于session在不同服务器中是不共享的,在分布式系统中,用户访问不同的系统都需要进行登录,因此,将session集中管理,实现不同系统的session"共享".
常用的方法是将session保存在redis中,当用户登录过一次后,在redis中保存一个以sessionId为k,用户信息为value的键值对,同时将sessionId返回到客户端的cookie中.
单点登录(SSO)
在多系统中,经过一次登录,即可获取全部应用系统的权限,而无需再次登录
单点登录流程
(1)用户首先访问单点登录服务器,进行登录操作
(2)当用户输入的信息正确,则生成用户的token,将用户信息转为json串和token(MD5(盐值+随机数))一起保存到redis缓存当中
(3)服务器将token返回给客户端,将数据保存到浏览器的cookie中
(4)当用户再次登录时,首先会检查浏览器的cookie中是否存在token,然后检查redis中是否为null,如果一切正确,则可以进行页面跳转,如果有一项有误,则返回登录异常,重新登录.
以上是一个初学者的理解,欢迎各位大佬批评指正!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值