客户端Session与服务端Session别听混了

服务端的session(身份验证)和客户端的session(存储)你是不是听混了?

前端存储三种方式

名称存储 大小消失时间新建窗口
cookie不能超过4K可以设置过期时间(http请求会携带)同源共享(可以设置子域共享)
sessionStorage最大5M页面会话在浏览器打开期间一直保持,并且重新加载或恢复页面仍会保持原来的页面会话,关闭对应浏览器标签或窗口,会清除对应的 sessionStorage打开多个相同的 URL 的 Tabs 页面,会创建各自的 sessionStorage(同源窗口不能共享)
localStorage最大5M长期有效(以文件的形式存储在硬盘)同源共享

后端身份验证两种方式

前言:HTTP请求是无状态的,也就是不知道这一次的请求和上一次请求是否有关系,比如我们登录一个系统的时候,验证用户名密码之后,打开系统各个页面的时候就不需要再进行登录操作了,直到我们主动退出登录或超时退出登录;这里为了避免访问每个都登录一下,就要用到session和token。

所以总听到后端说的session到底是啥?

其实后端说的session就是上面所说的用与区分用户信息与登录态的一串值,由后台返回写入到客户端的cookie里,然后每次HTTP请求就带着这个所谓的session到服务端用于服务端进行相关验证。

在这里插入图片描述

所以:服务端所说的seesion并不是我们客户端的sessionStorage!

服务端身份验证的两种方式对比:

名称工作原理优点缺点
cookie + sessionsession由服务端生成,保存在服务器的缓存中(redis),服务端通过 set-cookie 把对应的sessionId写入到客户端的cookie里。在下次的请求带上cookie(自动)用于身份验证。适用于子域免登录(例如:主域的应用登录了那么其他子域的应用可以直接共用这个域的cookie验证实现免登录)存放在redis中必须依赖服务器,暂用服务器资源、不支持跨端有些前端技术不支持Cookie(如微信小程序)
token当客户端第一次访问服务端,服务端会根据传过来的账号,查询对应的用户信息(userid)再运用一些加密算法生成一个token。当客户端下次请求时,需要带上token(手动添加到请求头里)服务器收到请求后,会验证这个token。支持跨域访问、适用接口跨平台、不存在CSRF攻击每次都要解密token很浪费算力资源、Jwt是无状态的,如果别人获取到了,别人也能用
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值