ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

理解Cookie,Session,Token

2022-03-11 11:33:10  阅读:94  来源: 互联网

标签:请求 Session token 保存 Token session Cookie 客户端


理解Cookie,Session,Token

1.Cookie 和 Session

http本身无状态,就是不保存任何用户信息。 所以引入cookie(客户端方案)、session(服务端方案)来保存用户信息

http 为什么无状态?
很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。
但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求是无状态的,所以想出的办法就是给大家发一个会话标识(session id), 说白了就是一个随机的字串,每个人收到的都不一样, 每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了

1.1 区别

讲一下Cookie和Session?
cookie因为保存在客户端存在:
安全问题(拦截或本地文件找到cookie,存在被篡改的风险)
大小的限制(一般不超过4kb)
只能存字符串

而session保存在服务器端:
使用的是map数据结构实现,通过 session.setAttribute(“key”,value) 存信息 和 session.getAttribute(“key”) 得到value。当用户已登录系统后你就在session中存储了一个用户信息对象,此后你可以随时从session中将这个对象取出来进行一些操作,比如进行身 份验证等等.
所以它可以保存各种类型的数据,大小也没有限制

注意:
1、但session不适合保存比较多的信息,防止服务端压力过大。一般只存ID,比如一个网站同时几万人访问,服务器端要保存这么多 session 对服务器来说压力很大
2、密码也不宜放进session。 private transient String password; 且分布式项目的缘故。

1.2 Cookie 和 session 的生命周期

Cookie 的生存周期?
Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

session 的生命周期?
当浏览器第一次请求是,服务器端创建一个session对象,同时生成一个sessionId,并在此次响应中将sessionId 以响应报文的方式传回客户端浏览器内存或以重写url方式送回客户端,来保持整个会话。
当超时(30分钟没有进行任何HTTP请求)或者session.invalidate()将session设置为失效;
关闭浏览器不会删除服务端的session,但是可能会删除cookie保存的sessionId。

2.Token

了解 token 吗?
token也是用来保持会话的,在客户端第一次登录后,服务器生成回给客户端,并由客户端保持,在之后的请求的时候带上 token 来表明身份

token 由用户信息和签名组成
签名: 服务端在接受到用户请求的时候判断该请求是否是来自于自己允许的平台(自己允许的平台有统一的规则),由加密算法以及非对称加密密钥生成

2.1 Token的身份验证方法

过程:
1、用户登录通过后,服务器端数据签名,再和数据一起作为token串回给浏览器,自己保存 签名和密钥。
2、客户端保存 token,下次请求的时候在header头里带上 token就行
3、服务器端接收到请求后对 token 中的数据再以同样的方式进行签名,看签名是不是自己的签名
在这里插入图片描述

Token 中的数据是明文保存的,所以我不能在其中保存像密码这样的敏感信息。
token的生成一般是采用uuid保证唯一性,当用户登录时为其生成唯一的token,存储一般保存在数据库中
token过期时间采用把token二次保存在cookie或session里面,根据cookie和session的过期时间去维护token的过期时间
token有撤回的操作,通过token revocataion可以使一个特定的token或是一组有相同认证的token无效

2.2 token 优点:

无状态、可扩展
支持移动设备
跨程序调用
安全

标签:请求,Session,token,保存,Token,session,Cookie,客户端
来源: https://blog.csdn.net/a1241692733/article/details/121902865

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有