2021-10-31 - 会话管理 - 傻傻分不清,前后端接口 Cookie、Session、Token 的区别

1.应用场景

主要用于弄清楚, 会话管理中的机制, 登录认证的实现原理, 以及各种技术的本质区别, 从而进行合适合理的高效编程实现.

2.学习/操作

图片

1.文档阅读

傻傻分不清,前后端接口 Cookie、Session、Token 的区别 -- 推荐好好阅读

前后端接口鉴权全解 | Usubeni Fantasy -- 上面的原文 - 推荐

HTTP 会话控制[Cookie与Session] - 学习/实践_william_n的博客-CSDN博客

分布式系统 - 登录 - 学习/实践_william_n的博客-CSDN博客

Lumen - 学习/实践_william_n的博客-CSDN博客 -- 其中涉及到REST API的实践, 有会话管理认证

Restful API - 学习/实践_william_n的博客-CSDN博客

2.整理输出

通过认真阅读, 以及后续的实践验证, 可以知道:

简单说, 就是这些会话管理的技术本质上分为客户端存储与服务端存储两种实现方式

我们常用的单体登录实现, 通常是基于服务端储存实现方式, 

关于分布式系统登录, 则通常是基于JWT来实现, 属于客户端存储实现方式.

关于分布式系统登录中, session中心化实现方式, 属于哪种实现方式, TBD

弄清楚他们之间的区别, 本质, 才能更好地使用.

下面文章的重点内容总结如下:

  • cookie 是储存 session/session id/token 的容器
  • cookie 设置一般通过 set-cookie 请求头设置
  • session 信息可以存放在浏览器,也可以存放在服务器
  • session 存放在服务器时,以 session id 为钥匙获取信息
  • token/session/session id 三者的界限是模糊的
  • 一般新技术使用 token,传统技术使用 session id
  • cookie/token/session/session id 都是用于鉴权的实用技术
  • JWT 是浏览器储存 session 的一种
  • JWT 常用于单点登录(SSO)
  • OAuth2.0 的 token 不是由应用端颁发,存在另外的授权服务器
  • OAuth2.0 常用于第三方应用登录

截图

后续补充

...

3.问题/补充

1. 可以看到作者在最后说到,我们自己可以实现一个简单的登录系统

思路与伪代码已经给出,需要实践

let store = {}

// 登录成功后
store[HASH] = true
cookie.set('token', HASH)

// 需要鉴权的请求钟
const hash = cookie.get('token')
if (store[hash]) {
  // 已登录
} else {
  // 未登录
}

// 退出
const hash = cookie.get('token')
delete store[hash]

所以之前听说,有人自己不用PHP自带的session机制,而是自己封装实现了一个session认证系统,

现在看来,简单的认证系统,我们自己也可以封装实现~ --- 技术无边界,只要懂了,也就觉得没什么神奇的了

2. TBD

4.参考

傻傻分不清,前后端接口 Cookie、Session、Token 的区别 推荐好好阅读

前后端接口鉴权全解 | Usubeni Fantasy -- 上面的原文 - 推荐

HTTP 会话控制[Cookie与Session] - 学习/实践_william_n的博客-CSDN博客

分布式系统 - 登录 - 学习/实践_william_n的博客-CSDN博客

Lumen - 学习/实践_william_n的博客-CSDN博客 -- 其中涉及到REST API的实践, 有会话管理认证

Restful API - 学习/实践_william_n的博客-CSDN博客

后续补充

...

Guess you like

Origin blog.csdn.net/william_n/article/details/121071885