jwt与token+redis,哪种方案更好用?
2023-08-03
132 阅读
jwt与token+redis是两种常见的无状态认证方案,它们各有优缺点,适用于不同的场景。
jwt是一种基于JSON的开放标准,用于在双方之间安全地传输信息。
jwt由三部分组成:头部、有效载荷和签名。
头部包含了加密算法和令牌类型;有效载荷包含了一些声明,如用户标识、过期时间等;签名是对前两部分的加密,用于防止篡改。
token+redis是一种基于令牌和缓存的认证方案,用于在服务端存储用户信息和状态。
token是一个随机生成的字符串,用于标识用户身份;redis是一个高性能的内存数据库,用于存储token和用户信息的映射关系。
jwt与token+redis的对比如下:jwt的优点是去中心化,不需要在服务端存储用户信息,减轻了服务器压力,便于分布式系统使用;缺点是一旦下发,服务端无法主动让token失效,如果发生token泄露,服务器也只能任其蹂躏,在其未过期期间不能有任何措施。
另外,jwt的请求头体积较大,加解密效率也较低。
token+redis的优点是服务端可以主动让token失效,可以实现注销登录、踢人下线等功能;缺点是依赖内存或redis存储,分布式系统的话,需要redis查询/接口调用增加系统复杂性。
另外,token+redis需要维护会话状态,与RESTful原则相悖。
综上所述,jwt与token+redis哪种方案更好用,要根据具体的业务需求和场景来决定。
如果对用户管理要求比较严格,或者需要实现一些会话相关的功能,可以使用token+redis方案;如果对用户管理要求比较宽松,或者需要实现一些无状态的功能,可以使用jwt方案。