1. cookie
- 特性
- 存储在客户端
第一次访问时服务器将
cookie
返回给浏览器,以kv 形式保存到某个文本文件中,服务器不做存储
- 不可跨域
每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用,但一级域名和二级域名之间是允许共享使用的(靠的是 domain)
- 重要属性
name=value
: 设置Cookies名称及相对应的值domain
: 制定cookie所属域名,默认当前域名path
: 制定cookie在哪个路径下生效,默认是‘/’maxAge
:标识cookie在多少秒后失效,0标识不保存,-1标识删除,浏览器关闭即生效expires
:过期时间,在设置的某个时间点后失效secure
:设置为true时,cookie仅在https中有效。默认falsehttpOnly
:无法通过js获取cookie信息,一定程度上防止xss攻击
2. session
- 特性
- 基于cookie实现
将
session_id
和敏感数据做一个映射存储到session服务器,将session_id
返回给客户端并存储在cookie
中
3. token
access token
- 组成
- uid:用户唯一身份标识
- time:当前时间的时间戳
- sign:签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串
- 特性
- 存储 : 客户端存储在
cookie 或 localStorage
里,服务器不存储(以时间换空间)- 安全性:防止 CSRF
- 可扩展:提供可选的权限给第三方应用程序
- 多平台跨域:设置
Access-Control-Allow-Origin: *
refresh token
- 介绍
- 专用于刷新 access token 的 token。
- 过期时间长于access token,提高了因access token泄漏的安全性
- 示例
- 设置access token过期时间为1h,refresh token过期时间为30天
- 在access token过期后可以使用refresh token获取新的access token
- 在refresh token过期后需要重新登陆
JWT
- JSON Web Token