token cookie session的区别

token cookie session的区别

大家好,我是酷酷的韩~
在这里插入图片描述
一.Cookie简介

cookie是一个非常具体的东西,指的是浏览器里能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。cokkie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器,由于cookie是存储在客户端的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占用太多磁盘空间,所以每个域的cookie数量是有限的。

二.Session

session从字面上讲,就是会话,比如谈恋爱,你怎么知道这个女生就是自己的女朋友呢,肯定是有某种特征。session类似的道理,服务器要知道当前发请求给自己的是谁。为了区分, 服务器给客户端分配不同的’身份标志’客户端每次向服务器发送请求时都带着标志,服务器就知道请求来自谁了。
保存方式,大多采用cookie方式。
服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被摧毁,这种用户信息存储方式相对cookie更安全。
有一个缺陷:如果做了负载均衡,下一个操作请求到另一台服务器时 session会丢失。

三.Token

1.引入:

token是在客户端频繁像服务器端请求数据,服务端频繁的查数据库,查询用户名密码进行比对,判断是否正确,并作出相应的提示,在此背景下,token便来了~

2.定义:

token是服务端生成的一串字符串,以做客户端进行请求的一个令牌,第一次登陆后,服务器生成token并将token返回给客户端进行存储,以后客户端只需要带着这个token进行请求数据,不需要带上用户名密码等。最简单的token组成:uuid,time(当前时间戳),sign(签名,token前几位+盐以哈希算法)

3.目的:

减少数据库查询,减轻服务器压力。

4.流程:

1.客户端使用用户名和密码登录
2.服务端收到请求后,验证用户名和密码,验证成功后,服务端返回一个token返回给客户端。
3.客户端收到token,存储起来,cookie或localstorage里
4.客户端每次像服务器请求时带着token
5.服务端接收请求后,验证token,验证成功,就返回给客户端数据。
6.我这里是在登录时生成token后存入redis,内容为用户的重要信息,并加密,每次请求带着token。

四.三者的区别:
1.cookie和session的区别:

(1)cookie数据放在客户端上, session数据放在服务器上。
(2)cookie不是很安全,容易被发现,进行恶意操作。此时session占优
(3)session会再一定时间内保存在服务器上,访问增多高并发时,会比较占用服务保存器性能, 此时cookie占优。
(4)单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多 保存20个cookie
(5)登录等重要信息存入session,其他信息如果需要保留,可以放入cookie

2.session和token的区别:

(1)作为身份认证,token安全性比session好,因为每个请求都有签名,还能防止监听以及重放攻击,session必须靠链路层来保障通讯安全、
(2)session是一种http存储机制,为无状态的http提供持久机制。只是简单的把user信息存储到session里,因为sid的不可预测性,暂时认为是安全的。
(3)token提供的是认证和授权,token是唯一的,适用于第三方共享。

3.token和cookie的区别:

(1)token和cookie一样都是首次登陆时,由服务器下发,都是当交互时进行校验的功能,都是为无状态的HTTP提供持久机制
(2)token存在哪都行,localstorage或者cookie
(3)token只需要告诉服务器它是谁就可以。
(4)token不需要去查你是谁,不要保存会话,当用户退出的时候,cookie和服务器的session都会注销,token只需要注销浏览器信息。
(5)token由于服务器不存储会话,所以可扩展性强,token还可用于app中。

无论什么时候,做什么事情,要思考。------酷酷的韩

发布了13 篇原创文章 · 获赞 33 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/hjq_ku/article/details/89636790