session和token的区别

token和session的区别1
众所周知,HTTP协议它是无状态的协议,浏览器多次请求服务器,服务器它无法感知是不是同一用户的请求,于是就有了Session机制。

Token的出现是为了解决Session的弊端。

Token我们一般称为令牌,一般通过MD5、SHA算法将密钥、公钥、时间戳等元素加密产生的加密字符串。


一、session机制,原理

在这里插入图片描述

Session是存放在服务器端的一个对象,主要用来存储所有访问过该服务端的客户端
的用户信息(也可以存储其他信息),从而实现保持用户会话状态。但是服务器重启时,
内存会被销毁,存储的用户信息也就消失了。

不同的用户访问服务端的时候会在session对象中存储键值对,“键”用来存储开启这个用户
信息的“钥匙”,在登录成功后,“钥匙”通过cookie返回给客户端,客户端存储为sessionId
记录在cookie中。当客户端再次访问时,会默认携带cookie中的sessionId来实现会话机
制。

session是基于cookie的:
	1.cookie的数据4k左右
	2.cookie存储数据的格式:字符串key=value
	3.cookie存储有效期:可以自行通过expires进行具体的日期设置,如果没设置,默认是关闭浏览器时失效。
	4.cookie有效范围:当前域名下有效。所以session这种会话存储方式方式只适用于客
	户端代码和服务端代码运行在同一台服务器上(前后端项目协议、域名、端口号都一
	致,即在一个项目下)
	
session持久化:
	用于解决重启服务器后session就消失的问题。在数据库中存储session,而不是存储在
	内存中。通过包:express-mysql-session
	
其它:
	当客户端存储的cookie失效后,服务端的session不会立即销毁,会有一个延时,服务
	端会定期清理无效session,不会造成无效数据占用存储空间的问题。

二、token机制,原理

在这里插入图片描述

适用于项目级的前后端分离(前后端代码运行在不同的服务器下)
请求登录时,token和sessionId原理相同,是对key和key对应的用户信息进行加密后的加
密字符,登录成功后,会在响应主体中将{token:'字符串'}返回给客户端。客户端通过
cookie、sessionStorage、localStorage都可以进行存储。

再次请求时不会默认携带,需要在请求拦截器位置给请求头中添加认证字段Authorization
携带token信息,服务器端就可以通过token信息查找用户登录状态。

三、session和token的区别
session和token有什么区别2

相同点:

Session和Token机制原理上差不多,都是用户身份验证的一种识别手段,都是用来保持
会话的,它们都有过期时间的限制,但两者又有一些不同的地方。

不同点:

1.Session是存放在服务器端的,可以保存在:内存、数据库、NoSQL中。它采用空间换
时间的策略来进行身份识别,若Session没有持久化落地存储,一旦服务器重启Session
数据会丢失。
session在浏览器可以写入cookie。

2.Token是放在客户端存储的,采用了时间换空间策略,它也是无状态的,所以在分布式
环境中应用广泛。
session在浏览器可以写入cookie、sessionStorage、localStorage。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值