cookie、session、token

2021/6/12 18:27:23

本文主要是介绍cookie、session、token,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

cookie、session、token都是用来跟踪用户身份的方式。

工作原理:
1.Cookie的工作原理
(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据确定用户权限
在这里插入图片描述

2.Session的工作原理
(1)浏览器端第一次发送请求到服务器端,服务器端创建HttpSession对象,以sessionId为标识位,同时会创建一个特殊的Cookie,这个cookie中会包含sessionId

(2)然后将该Cookie发送至浏览器端
(3)浏览器端下一次向服务器端发送请求,会在请求中携带sessionId
(4)服务器端根据sessionId,去查询HttpSession对象的相应内容,如果不存在则重新创建,如果存在就可以根据数据确定用户权限。
 

3.token的工作原理

(1)用户通过用户名和密码发送请求。

(2)服务端验证,  返回生成的token 给客户端。

(3)客户端储存token,并且其后的每一次请求都添加token,。

(4)服务器接收到客户端的请求之后,会取出token值与数据库中的token值做对比。

对比一:如果两个 token 值相同, 说明用户登录成功过!当前用户处于登录状态!

对比二:如果没有这个 token 值, 则说明没有登录成功;

对比三:如果 token 值不同: 说明原来的登录信息已经失效,让用户重新登录。

token使得前后端分离,可以做到前后端的单独开发,使得前端在使用后端接口的时候更像一个API,既不用依赖cookie也不用依赖session保存状态的机制

cookie、session区别

1.cookie数据存放在客户的浏览器上,session数据放在服务器上

2.cookie的安全性低于session,别可以通过cookie欺诈获得你的权限和状态

3.cookie对服务器性能影响较小,session会在访问量增多时影响性能

4.cookie数据一般不超过4K,一个站点最多20个cookie,session的限制较少

所以个人建议:

将登陆信息等重要信息存放为session;

其他信息如果需要保留,可以放在cookie中。

 

比较

cookie : 

1. cookie由服务器生成,保存在客户端浏览器。

2. 容易被劫持,不安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗。

3. cookie可以被用户禁止

4. 容量小, 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

session

1. session是由应用服务器维持的一个服务器端的存储空间, 没有对存储的数据量的限制,可以保存更为复杂的数据类型.

2. session 默认被存在在服务器的一个文件里, 但是实际中可以放在 文件、数据库、或内存中都可以。

3. 当用户量增多时,会对服务器造成较大压力。

4. Session的实现方式大多数情况用Cookie保存的,但是也可以使用URL地址重写。

5. 较安全,用户验证这种场合一般会用 session, 比如金融银行类的产品, 

token

1.无状态

在客户端存储的Tokens是无状态的。基于这种无状态和不存储Session信息,负载均衡器能够将用户信息从一个服务传到其他服务器上。

2.可扩展

Tokens能够创建与其它程序共享权限的程序。

例如,能将一个随便的社交帐号和自己的大号(Fackbook或是Twitter)联系起来。当通过服务登录Twitter(我们将这个过程Buffer)时,我们可以将这些Buffer附到Twitter的数据流上(we are allowing Buffer to post to our Twitter stream)。

使用tokens时,可以提供可选的权限给第三方应用程序。当用户想让另一个应用程序访问它们的数据,我们可以通过建立自己的API,得出特殊权限的tokens。

3.跨服务器调用

只要用户有一个通过了验证的token,数据和资源就能够在任何平台(Android,ios, h5)任何服务器上被请求到。

4.安全性

可以避免cookie中的CSRF跨站请求伪造

请求中发送token而不再是发送cookie能够防止CSRF(跨站请求伪造)。即使在客户端使用cookie存储token,cookie也仅仅是一个存储机制而不是用于认证。不将信息存储在Session中,让我们少了对session操作。

token是有时效的,一段时间之后用户需要重新验证。我们也不一定需要等到token自动失效,token有撤回的操作,通过token revocataion可以使一个特定的token或是一组有相同认证的token无效。
 

 

 

 

 

 



这篇关于cookie、session、token的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程