session
"会话",当用户打开页面,服务器会生成session,使用session将用户的信息缓存在服务器或数据库中,里面有唯一的sessionID,将sessionID返回给客户端,客户端每次发送请求时,cookie中携带session,服务器通过对比验证用户身份信息
用户离开网站后,session 会被销毁
缺陷: 如果服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候 session会丢失
cookie
cookie 是保存在本地浏览器上的数据,由服务器生成,发送给浏览器,浏览器以键值对的形式保存,每一次发送请求时,会把cookie发送给服务器
token
"令牌",用户身份验证的方式,最简单的token组成: uid(用户唯一的身份标识),time(当前时间的时间戳),sign(签名),还可以把不变的参数也放进token,避免多次查库
cookie 和 session的区别
- cookie数据存放在浏览器上,session数据是存放在服务器上
- cookie 不是很安全,session安全性更高点
- session 会在一定时间内保存在服务器上,当访问增多,会比较占用服务器性能,适当使用cookie
- cookie 保存数据有限, 不能超过4K
- 个人建议:将登陆信息等重要信息存放在session,其他信息放在cookie中
基于token的身份验证
使用token的身份验证,在服务端不需要存储用户的登陆信息,大致流程:
- 客户端使用账号密码请求登陆
- 服务端收到请求,验证账号密码
- 验证成功后,服务端会签发一个token,然后返回给客户端
- 客户端收到token后,保存在cookie中
- 客户端每次向服务器请求资源时,携带token
- 服务端收到请求,去验证token,验证成功,返回数据
汇总
token就是令牌,比如你授权登陆一个程序时,他就是个依据,判读你是否已授权该程序
cookie时写在客户端的一个TXT文件,里面包括你的登陆信息之类的,这样当你下次登陆某个网站时,就会自动调用从cookie中的信息登陆
网友评论