cookie&session:
1.cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案,不设置cookie超时时间,关闭浏览器cookie清除不保存硬盘,反之保存;
2.cookie的内容主要包括:名字,值,过期时间,路径和域;
3.浏览器请求服务器后会生产sessionid,sesssionid保存在浏览器cookie中,请求服务后从cookie中读取sid;
4.每一个客户端与服务端连接,服务端都会为该客户端创建一个 session,并将 session 的唯一标识 sessionId 通过设置 Set-Cookie 头的方式响应给客户端,客户端将 sessionId 存到 cookie 中。
5.sessionId 是 cookie 和 session 之间的桥梁。
6.cookie 只支持存储字符串数据,session 可以存储任意数据。
7.cookie 的有效期可以设置较长时间,session 有效期都比较短。
8.session 存储空间很大,cookie 有限制。
token
1.完整的token包含了标头、有效载荷和签名三个部分,它们一起构成了一个安全的令牌,用于进行身份验证和授权。
2.cookie、session、token三者最终的目的都是一样:鉴权和认证
3.登录后将用户 id 和一些其它信息进行加密,生成 token,服务端将 token 响应给客户端,客户端存储后下次请求时放在请求头,验证通过后返回数据
总结:
1. cookie 优点:简单易实现 缺点:存储本地不安全,csrf攻击,跨域难处理
2.session优点: 是个会话查询速度快内存操作,结合cookie容易实现鉴权,session存储在服务器也安全 缺点:耗费资源,每个用户都要有一个session,完成存储用户信息
3.token 优点:安全,被截取用户id也没事不涉密,采用des,rsa等加解密与服务器传输,只用了用户id加密鉴权,不消耗服务器资源,跨域好处理 缺点:查询速度慢,只存储了用户id需要频繁查询数据库(现在有了redis缓存中间件,不必频发查数据库)
简单点理解:
cookie就是存在浏览器本地的访问系统的钥匙;
session就是访问服务器以后,服务器对用户生成的单独的钥匙,服务器根据用户访问时长定时更新session达到鉴权效果;
token就是登录系统后程序生成的加密串,加密过程保密,用加密后的钥匙请求服务器时程序能解密或者识别才能正常访问系统,反之不能访问