session和token检验的区别
都是 登陆状态校验的一种实现方式
1)session机制
---页面提交 用户名,密码 登录
---后端验证通过,代表登录成功
---在服务器保存登录用户信息,称之为session数据,并将sessionID响应给客户端
补充:
一般通过cookie机制(响应头--header中),进行保存和传递,
浏览器会自动保存,
web系统,session最常见
---登陆后的每次请求将携带cookie
服务器提取cookie中的sessionID 和后端保存的信息进行比对
2)token令牌校验机制
---页面提交 用户名,密码 登录
---后端验证通过,代表登录成功
---在服务器不需要保存登录用户信息,只需要生成一个token令牌(特殊的字符串),返回token信息响应给客户端
补充:
token的返回,没有规定必须在cookie里面,开发可随意定制,例如返回json
客户端通常需要自行保存,前端人员 自己想办法
移动端系统,token最常见
---登陆后的每次请求将携带token
服务器检查token合法性(这个字符串不是随便生成的,有特定的规则算法生成;后端最常见的token技术:JWT (json web token))
核心区别点:
session需要将 登录用户信息 存储在服务器,sessionID就是普通的编号,无特殊意义
token通常有自证功能,服务器一般不需要存储 登录用户信息
token技术相对于session技术而言更加安全:
token有效期短,token采用了签名,加密等安全措施,可以把有效防止token被伪造和修改
session长时间保存在服务器缓存中,容易被攻击盗取,且会影响服务器性能
sessionID存储在cookie中,安全性也低
sessionID是存在服务器内存里,session保存的用户信息存在服务器内存或数据库,
cookie接收保存服务器发来的sessionid,然后每次浏览器发送请求就会带上cookie的数据。
token是服务器加密的用户信息,服务器将token发给浏览器,浏览器用cookie或storage保存cookie。然后浏览器每次发送请求就带上token,服务器将其解密并确认用户登录。
服务器验证是前提。
cookie保存在客户端,服务器不加密不保存;
session保存在服务器,服务器要加密并保存;
token保存在客户端,服务器要加密不保存。