这段时间因为学习Spring Security的“鉴权”从而知道了token这个名词。所谓鉴权,是指验证用户是否拥有访问系统的权利。在这里跟大家一起探讨下cookie、session和token。如有错误之处,欢迎指正。(更多的Java学习知识可关注vx公众号: 进阶的coder)
Cookie
cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。cookie由服务器生成,发送给浏览器,浏览器把cookie以 K-V 形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。
cookie分为两大类:会话cookie和持久化cookie。
会话cookie:是存放在客户端浏览器的内存中,他的生命周期和浏览器是一致的,当浏览器关闭会话cookie也就消失了。
持久化cookie:是存放在客户端硬盘中,持久化cookie的生命周期是我们在设置cookie时候设置的那个保存时间,session的信息是通过sessionid获取的,而sessionid是存放在会话cookie当中的,当浏览器关闭的时候会话cookie消失,所以sessionid也就消失了,但是session的信息还存在服务器端,只是查不到所谓的session但它并不是不存在。
session
存在于服务器中,Session 是一种HTTP存储机制,目的是为无状态的HTTP提供的持久机制。所谓Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。</

本文探讨了Cookie、session和token在鉴权中的角色。Cookie分为会话和持久化,数据存储在客户端,session存储在服务器,而token作为无状态的身份验证手段减轻服务器内存压力。负载均衡和内存考虑是引入token的重要原因。

846

被折叠的 条评论
为什么被折叠?



