前言:
- 本文虽然使用PHP语言讲单点登录,但是更多讲的是一种实现思想,不仅限于PHP。
- 该单点登录方案完全实现跨域名。
- JWT的使用只是生成一个唯一token字符串,也可以不利用JWT。
- 重要存储Token方式,Cookie与Redis。
- 支持原创文档。
- 该单点登录方案已稳定运用到本人所在公司的项目。
- 欢迎讨论和提问。
一、WEB程序的“会话机制”
简单回顾:
1.http协议是无状态的
是指协议对于交互性场景没有记忆能力,每次请求http都会当做一次新的请求。
2.让服务器有记忆能力之Cookie、Session
WEB到底是如何采用Cookie+Session来进行“会话状态”维护的:
- 浏览器发起第一次请求,服务器(php)创建一个唯一sessionID
- 把sessionID设置到cookie中
- 浏览器发送第二次、第N次请求都会携带cookie中的sessionID,服务器去识别是谁在请求
3.客户端禁用Cookie之后如何使用Session
session是基于cookie的,但cookie只是传递一个sessionID,cookie禁用后我们可以利用url传sessionID的方式进行使用session。
4.举例:
4.1 创建一个session并且,生成几个跳转其他页面的链接
4.2 点链接后跳转的页面,输出session值
4.3 演示结果:
4.4 要实现禁用cookie,地址栏自动携带sessionID需要改php.ini的相关配置:
在php.ini文件中
1.session.use_trans_sid=1 当浏览器禁止cookie时,