网站内容更新机制(Token+Redis怎么做登录认证?服务共享session)
优采云 发布时间: 2022-04-09 17:05网站内容更新机制(Token+Redis怎么做登录认证?服务共享session)
在单台服务器中,我们大部分的用户认证都是会话(session),但是如果是集群服务器架构呢?需要做会话共享,多个服务共享一个会话,这样才能保证集群服务器架构(多台服务器)使用一个会话,或者我们也可以使用Token进行登录认证,使用Token+Redis同时实现一起完整的登录身份验证。
会话共享将在后面讨论。今天我们就来说说Token+Redis是如何进行登录认证的。
首先我简单介绍一下什么是JWT。 JWT的全称是(JSON WEB TOKEN),是目前流行的登录认证工具之一。这是一个非常轻量级的规范。该规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。它的两个主要使用场景是身份验证和数据交换。
详细的JWT这里就不解释了,留到下一篇吧。今天要讲的就是JWT认证,也就是使用JWT生成Token,客户端使用Token来访问我们其他需要用户认证的接口。
事实上,JWT 生成的是一个字符串。 JWT 生成的 Token 由三部分组成:Header、Payload 和 Signature。具体情况大家自己了解,这里不再赘述。今天我们主要讲一下Token的更新策略。
我们生成Token的场景是在用户登录成功的时候生成的。如果用户每次登录都要生成一个Token,在高并发场景下是很糟糕的,也很容易被恶意攻击。可以使用 store 的缓存方案来做 Token 更新策略。
JWT 生成的 Token 具有有效性机制。如果设置为 30 分钟,则 Token 为 30 分钟。如果用户在我们的WEB网站上一直活跃30分钟,那么在第31分钟你必须重新登录,这给用户的体验极差,和我们使用的Session有效性机制不同单服务器。
本地缓存我们可以使用市场上最流行的内存数据库Redis系统。使用Redis做Token更新策略的主要流程,可以先看下图。
这张图的主要思路是:用户带上账号和密码访问后端验证,验证成功后生成一个Token,并为Token设置有效期, Token 被放入 Redis。 Redis 中的有效期必须比 Token 的有效期长。用户访问界面时,如果token已经过期,去redis查找。如果redis有token,就会生成一个新的token来替换过期的token。 redis的有效期重置为60分钟。如果redis中不存在token,说明token在redis中已经过期或者是无效token,提示用户重新登录。