Cookie、Session、Token的区别
Cookie:是存储在浏览器本地的信息,以字符串内键值对的形式存储会话信息(类似于JSON字符串);
适用场景:由于HTTP协议是无状态、无连接的超文本传输协议,所以无法对用户会话进行跟踪连接,所以将会话信息存储到cookie,这样浏览器访问服务端的时候就能知道先前的连接会话信息;一般该信息记录用户身份,当然cookie也常记录跟踪购物车的商品信息(如数量)、记录用户访问次数等。
安全性:由于在本地存储,不安全;
生命周期:在浏览器中发起一个会话即新建的一个cookie文本,关闭浏览器窗口即cookie失效,这称为会话cookie;当然也可以设置cookie的有效时长,则会存储在本地直到失效,例如
Response.Cookies(“LastView”).Expires=# 1/29/2003 # 设置cookie到2003年1月29号失效;
c.setMaxAge(365*24*60*60);//一年;
容量:一般为4k
session:是存储在服务端的信息,可以存储任何数据;
适用场景:session又称为会话状态,用于维护浏览器中实例相关的一些信息;例如在开发中要将获取到的用户对象存储到session中;
生命周期:当浏览器第一次访问服务器时,服务器会生成一个sessionID并发送给浏览器,以及生成session,在tomcat中的默认有效时长是30min;也可以设置有效期或者手动删除 session;
安全性:相对cookie更安全;因为如果要访问session,要先获取到cookie中加密的sessionID;
容量:无限制(但是显然要合理利用)
参考网址:https://www.cnblogs.com/zhangkai2237/archive/2012/03/22/2410890.html
Token:是一种认证方式,“令牌”,根据用户的id和密码生成的唯一的字符串;
适用场景:用于身份认证;当客户端频繁的从服务端请求数据,导致服务端频繁到数据库核对用户名和密码,此时以设备号/设备mac地址Token,只要客户端持有参数就可以直接请求数据,无需用户名和密码,否则返回错误信息;
生命周期:当客户端第一次登录后,服务端生成Token,并传给客户端,保存到cookie或local Storage中;
参考网址:https://blog.csdn.net/cmj6706/article/details/79032703