web会话机制的演变史

什么是web会话机制

由于 http 协议是无状态的,所以当 多个用户请求服务器的时候 服务器无法 区分 和 记住 用户,举个例子:

我们访问一个购物网站的服务器,会话就被创建了,然后就点击浏览商品,对感兴趣的商品就先加入购物车,等待一起付账,这看起来是很普通的操作,但是想一下,如果有很多别的电脑上的浏览器同时也在访问该购物网站的服务器,跟我们做类似的操作呢?服务器又是怎么记住用户,怎么知道用户A购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,不能放入用户B或用户C的购物车内的呢?

所以为了解决会话机制的问题,早期的实现方案 是使用cookie+session来解决的,现在仍然有项目使用,不过比较少,现在最多的是使用 Token

cookie和session

session就是用户第一次访问网站的时候,服务器会给客户端发一个会话ID,类似于身份证,服务端也会保存,叫做sessionID,在第一次请求的响应头信息里面,发给客户端后浏览器会有一个叫cookie的缓存机制,会把sessionID保存在cookie里面,这样用户每次发起请求的时候,浏览器都会将cookie里面的数据,放到请求头里面一起发送,服务端从请求头取到cookie再取到sessionID,和服务端保存的session库进行对比,这样就能区分和记住用户了. 每个域名都有一个 cookie保存地址,不会共用 sessionID的有效期通常是半个小时 如何查看 cookie,打开f12
web会话机制的演变史_第1张图片
image.png

查看请求的 请求头
web会话机制的演变史_第2张图片
image.png

每次请求都会带上 cookie中的内容,这个安全性比较高,注意保密。

工作流程:
web会话机制的演变史_第3张图片
image.png

token

token一般被翻译为 令牌,一般是开发自定义一些用户信息,再使用加密手段,生成一段密文,发送给客户端,来代替session

工作流程:
web会话机制的演变史_第4张图片
image.png

token与 session 的区别

  1. 生成方式: sessiosenID一般是一个随机的字符串,本身并不包含用户信息,用户信息和sessionID的关系存储在服务端。 Token的生成方式,通常是将用户信息加密,比如用户名,用户权限,用户id,有效期等信息使用密钥加密,生成一个密文

  2. 验证方式 sessionID每次验证需要服务端去查询和对比,才能获得用户信息 token 则可以直接通过算法解密 来获得用户信息。好处是服务端可以不存储用户的token 当用户量大的时候,token更划算空间和时间

  3. 安全性 sessiosenID只能存在客户端的cookie中,这样很不安全,可以被js代码获取到,造成泄露等 token 有加密并且存放位置 不局限于cookie,Local Storage也可以放,更安全

  4. 传输方式 sessiosenID只能随 请求头 里面的cookie传输 token可以放在任何地方,通常是直接放在请求头里面,而不是cookie里面

其他

token和session的功能是一样的,只是实现方式不同,有的项目同样会在服务端存储token,具体还是看开发人员如何设计

JWT

JWT全称:JSON WEB TOKEN, 说简单点jwt就是一种token生成的规范。来看个例子
web会话机制的演变史_第5张图片
image.png

Jmeter中处理 cookie和session

Jmeter已经实现了浏览器中 的cookie功能,这个元件叫做HTTP Cookie管理器
web会话机制的演变史_第6张图片
image.png

如果项目中是使用session来实现会话机制的,只需要增加一个HTTP Cookie管理器元件就好了,层级结构如下
web会话机制的演变史_第7张图片
image.png

Jmeter中处理使用 Token 的会话机制

思路: 先发送登录请求,从响应中提取token,再交给后续接口使用 这里需要 jmeter中 变量和提取器的知识,下节课在学习

你可能感兴趣的:(web会话机制的演变史)