1.Cookie方案
Cookie保存在客户端中,分为内存Cookie和硬盘Cookie,内存Cookie由浏览器维护,保存在内存中,浏览器关闭后消失,硬盘Cookie保存在硬盘中,有一个过期时间,存在时间是长期的。
同时HTTP Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,会在浏览器在下一次请求被携带并发送到服务器上。
Cookie用于这三个方面上:
- 绘画状态管理
- 个性化设置
- 浏览器行为跟踪
服务器创建Cookie
服务器收到HTTP请求,会在响应头添加一个set-Cookie选项,浏览器收到响应后会保存下Cookie,之后对服务器每一次请求会通过Cookie请求头部将Cookie信息发送给服务器,Cookie的过期时间,域,路径,有效期,过期站点。
2. Session方案
session机制将用户所有的活动信息,上下文信息,登录信息等存储在服务端,生成一个唯一标识ID发送给客户端,后续交互没有重复的交互信息,取而代之的是唯一标识ID.
简单的交互流程
客户端第一次请求session对象,服务器会为客户端创建一个session,算出一个id标识session对象
浏览器下次请求别的资源,浏览器会将sessionID放置请求头,服务器接受请求会解析sessionID,服务器接收sessionID确定请求方的身份信息和上下文信息。
session的实现方式
- Cookie载体
- url重写(将会话标识号以参数形式附加在超链接URL地址后面的技术称为URL重写)
3.Token方案
由服务端生成并发送给客户端,是一种具有时效性的验证身份和手段
Token避免了session机制带来的海量信息存储问题,也避免了cookie机制的安全问题
简单的交互流程
- 客户端将账号和密码发送给服务端。
- 服务器对其校验,生成一个token值发给客户端,作为后续的请求交互身份令牌。
- 客户端拿到服务端返回的token的值后,将其保存在本地,每次请求服务端携带该token值,提交给服务端进行验证。
- 服务端收到请求,解析相关信息,根据加密算法,密钥,用户生成的参数sign与客户端的sign进行对比,一致则通过,否则拒绝。
- 验证通过后,服务端可以根据token中的uid获取对应的用户信息,进行请求业务的响应。