后端基础day8 认证授权之Cookie Session Token | 青训营笔记

81 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天

基本概念

认证授权与RBAC

认证 (Authentication): 即登录时的用户验证

授权 (Authorization): 给用户赋予权限

RBAC (Role-Based Access Control): 权限控制的一种模型, 用角色关联权限, 以用户关联角色

Cookie Session Token

为什么要有cookie session

session、cookie、token的区别? - 知乎 (zhihu.com)

HTTP是无状态的, 不保存请求和响应的通信状态, 即两次请求间没有关联. 所以很多情况, 需要判断两次请求是否的同一个人.

三者区别

Cookie

Cookie: 存在本地的一块k-v数据, 通常不超过4KB

  • 场景: Cookie一般用来保存用户信息, 例如①保存已经登录过的网站, Cookie可以帮助你自动填写一些信息 ②一般的网站会有保持登录状态, 是因为登录时存放了一个Token令牌在Cookie中, 下次登录只需利用Token查找用户. Cookie中不应该有敏感信息或需要加密, 如Token ③登录一次网站, 该网站的其他页面不需要登录, 这就是Session跟踪了该会话
  • 特性: ①浏览器在请求时会携带cookie到请求头 ②不安全, 只支持Unicode编码 ③不可跨域, 但如果设置了domain, 则可在一二级域名共享.

Session

  • Session是存在服务端用来跟踪会话(保存用户信息), sessionID唯一标识一个session 而sessionID只存在于客户端: 服务端生成cookie发送给客户(在响应头中设置Set-cookie字段), 里面包含sessionID和Token(用数字签名验证)

Token

  • Token(令牌): 无状态 可扩展 支持跨域调用 安全性

token的组成: uid, time时间戳, sign签名(token的前几位以hash算法压缩成的一定长度的16进制字符串). 由应用管理避开了同源策略, 不把用户信息保存在服务器上, noSession的验证可以方便增减服务器.