自己动手写session
cookie:
- Cookie包含用于标识用户的一些键值对,例如用户的唯一标识符、会话标识符。
- Cookie由服务器发送到浏览器,并保存在浏览器的本地计算机上,之后浏览器的每个请求都会自动带上相应的Cookie。
- Cookie不允许跨域,这是浏览器的基本安全机制之一。
- Cookie可以被Javascript读取和操作。
- Cookie可以被删掉。
session:
- session也包含了一些键值对,可以存放标识用户的数据(通常和Cookie相对应),还可以存放用户的状态信息。
- session数据存储在服务器上,存储方式可以是内存、数据库、文件等。
- session无法被删掉,除非会话结束。
token的生成算法和对应的格式:
- jwt
双令牌
“双令牌”(Double Token)是一种在分布式系统中实现资源隔离和访问控制的技术,它通常用于处理跨越多个系统或服务的操作,并确保用户在访问资源时具有合适的权限和身份验证。
在双令牌技术中,存在两种类型的令牌:
- 访问令牌(Access Token):访问令牌是一种用于访问受保护资源的凭证。通常,用户通过身份验证(如用户密码、OAuth授权等)获取访问令牌,并将其发送给服务端以请求访问资源。访问令牌通常包含有关用户身份、权限和过期时间等信息。
- 刷新令牌(Refresh Token):刷新令牌是一种用户获取新的访问令牌的凭证。由于访问令牌通常具有较短的有效期,刷新令牌用于访问令牌到期后获取新的有效令牌,而无需用户重新进行身份验证。刷新令牌通常具有更长的有效期限,并且只能通过安全的渠道传输。
双令牌技术通过将访问令牌和刷新令牌分离,有效地提高了系统的安全性和灵活性。它可以降低因访问令牌泄露而带来的安全风险(缩短过期时间),并且允许在用户不需要重新登录的情况下更新访问令牌,提升了用户体验。
访问令牌需要放在客户端的,例如放在cookie里,客户端的每个请求都会自动带上相应的访问令牌。
刷新令牌是私有令牌,是服务端存起来的一个只在服务端的令牌。它不会在传输过程中传输,也就是客户端是感知不到刷新令牌的。