Cookie、Session、Token的区别?

都跟维持状态信息有关

Cookie:

存储在客户端,也就是说存储在浏览器中,

优点:

1、存储在客户端。

2、帮助客户端和服务器之间维护状态信息。

弊端:

1、安全风险:有被串改的风险。(当然,也可以加密,一旦用户知道加密规则,也可以进行篡改)

2、容量限制: 4KB。

3、可用限制:用户可能禁用。

 Session:

使用过程:1、当前端发起登录请求,会将用户名与密码传送给后端

2、后端进行验证,如果验证成功了,后端就可以从session中存入,当前用户信息

3、然后进行响应,会在响应头里边存入一个  叫set-Cookie的属性,再把Session的唯一ID,放在属性当中

4、前端 自动在 cookie当中存入sessionID,下次登陆成功后,下一次的请求 ,自动的在请求头中,设置cookie的信息,服务端拿到cookie当中的 session ID就可以得到当前这一次请求,所对应的session信息,就可以获取到当前登录的用户信息,以维持当前的登陆状态。

Session使用是非常方便的,我们只需要在后端存入当前用户的信息,并且不仅仅限于字符串,可以存入整个的 用户对象,下次获取是非常方便的,WEB服务器是会 自动的在响应头里存入set-Cookie的属性,以及当前的session的唯一Id, 浏览器如果发现响应头里 有set-cookie 这个属性,它会自动把 sessionID 存入到 cookie中,不需要再浏览器这一端,调用setCookie()方法,响应头中的set-cookie()命令,它会自动帮我们存出,并且浏览器下一次的请求也会把 安全域它的cookie,传到服务器端,整个过程都是自动完成的,我们只管往Session中存数据即可

优点:

1、安全性高:存储在服务器端

2、容量大:可以保存对象

弊端:

1、占用服务器资源

2、扩展性差(分布式集群)

3、依然需要依赖cookie,跨域限制

Token: 

JWT

header:私钥,加密方式

payload:加密后的数据载体

signature:header + payload加密。

JWT的使用过程:

1、前端发起登录请求

2、后端进行认证,认证成功会创建一个JWT的字符串,它会包含三段信息

3、然后会把创建好的JWT返回给前端,前端拿到JWT的TOKEN,如果你想要数据的载体,只要进行分割,分割之后,拿到第二段(第二段保存的是数据的载体),拿到之后,通过Base64的方式进行解码即可

4、登录成功之后,后续的请求,只需要在请求头当中,设置一个跟后端约束的属性,

再把响应的JWT TOKEN传入到后端,后端拿到Token,就会进行JWT的解密,然后会验证 signature,如果检验成功,信息没有被篡改,就会进行放行,正常的进行响应,使用JWT,我们不用依赖后端的任何存储,也不需要前端的任何存储,就是一个加密之后的字符串而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值