Session、Cookie 和 Token 是用于管理用户身份验证和状态的常见机制,它们在 web 开发中扮演着不同的角色。
1. Cookie
- Cookie 是服务器发送到用户浏览器并保存在本地的小型数据片段。
- 主要用于跟踪用户的会话状态、记录用户首选项和其他信息。
- 由服务器设置,可以设置过期时间,过期后会被浏览器删除。
- 可以被客户端(浏览器)修改,因此不适合存储敏感信息。
- 通过浏览器每次向服务器发送请求时自动包含在 HTTP 报文中。
2. Session
- Session 是服务器端存储的关于用户会话的信息。
- 通常通过在服务器上创建唯一的 session ID 来跟踪用户的会话。
- 服务器使用 session ID 来查找相关的用户数据,可以存储敏感信息,因为它存储在服务器端。
- 可以存储在内存、数据库或者文件系统中。
- 一般情况下,session ID 是通过 cookie 发送给客户端的,但也可以通过 URL 重写等方式传递。
3. Token
- Token 是一种用于身份验证和授权的令牌,通常被用于 API 调用和单点登录系统(SSO)。
- 可以是任意的字符串,通常是加密的,包含了用户的身份信息和权限。
- 在用户登录后,服务器会生成一个 token 并发送给客户端,客户端之后可以使用这个 token 来访问受保护的资源。
- 通常存储在客户端的存储介质中,如 localStorage 或 sessionStorage。
- Token 可以有过期时间,并且可以通过刷新机制来更新。
简而言之,Cookie 是一种存储在客户端的数据,用于跟踪用户和维持状态;Session 是服务器端存储的用户数据;而 Token 则是一种用于身份验证和授权的令牌,通常用于 API 调用和单点登录系统。