Token 是一种用于在客户端和服务器之间进行身份验证的技术,通常被用于 Web 应用程序中。Token 可以被看作是一种凭证,它包含了某些用户信息和权限等数据。当用户登录成功后,服务器会生成一个 Token 并将其发送给客户端,在客户端的每次请求中都携带这个 Token,服务器会根据 Token 验证用户身份和权限。
JWT (JSON Web Token) 是一种基于 JSON 格式的 Token 标准,它包含了一些标准的声明(例如,身份信息、权限等)和自定义的声明,使用 HMAC 或者 RSA 签名算法对其进行签名,以保证其完整性和安全性。由于 JWT 使用标准的 JSON 格式,因此可以被各种编程语言轻松解析和使用。
Token 方案无法主动过期是一个常见的问题,通常可以通过以下两种方式来解决:
- 设置 Token 的有效期。在生成 Token 时,可以设置其有效期,当 Token 过期时,服务器将拒绝使用该 Token 进行身份验证。客户端需要定期重新获取 Token,以确保 Token 的有效性。
- 使用黑名单。当用户注销或者修改密码等操作时,服务器可以将相应的 Token 加入到一个黑名单中,这样该 Token 就无法再被使用进行身份验证。在客户端请求时,服务器会先检查该 Token 是否在黑名单中,如果在,则拒绝使用该 Token 进行身份验证。
需要注意的是,Token 的有效期和黑名单的维护都需要耗费服务器资源,因此需要权衡其安全性和性能的平衡。