在不使会话无效的情况下更新 Auth0 JWT
Updating Auth0 JWT without invalidating sessions
我有一个使用 Auth0 的应用程序,是用 ReactJS 和 NodeJS 制作的。大多数情况下一切正常。
设计是这样的,我们用管理标志装饰每个请求,并且我在我的 JWT 令牌中编码了 Auth0 配置文件。
这样我可以做如下事情:
server.route({
method: 'POST',
url: '/.../...',
preValidation: server.authenticate,
handler: async (req, res) => {
const { user } = req;
if (!user['admin']) {
...
}
...
}
});
除了一个我没有解决的问题外,我对这种方法很满意。如何处理来自用户的更新他们自己的个人资料的请求。配置文件更新后,JWT 保持不变并且配置文件信息已过时。
除了在每次配置文件更新时注销用户之外,还有什么办法可以解决这个问题吗?有没有办法在不结束会话的情况下更新 JWT?
这实际上是不可能的,因为它违背了 jwts 无状态的目的。但是,在这个特定的用例中,更新配置文件后,您可以创建一个新的 jwt 并将其添加为响应的一部分,以便客户端获取新令牌并将其用于进一步的请求
根据我的研究,解决方案是:
每次个人资料更新后自动重复登录,或通知最终用户并让他们选择是否要重复登录。
我有一个使用 Auth0 的应用程序,是用 ReactJS 和 NodeJS 制作的。大多数情况下一切正常。
设计是这样的,我们用管理标志装饰每个请求,并且我在我的 JWT 令牌中编码了 Auth0 配置文件。
这样我可以做如下事情:
server.route({
method: 'POST',
url: '/.../...',
preValidation: server.authenticate,
handler: async (req, res) => {
const { user } = req;
if (!user['admin']) {
...
}
...
}
});
除了一个我没有解决的问题外,我对这种方法很满意。如何处理来自用户的更新他们自己的个人资料的请求。配置文件更新后,JWT 保持不变并且配置文件信息已过时。
除了在每次配置文件更新时注销用户之外,还有什么办法可以解决这个问题吗?有没有办法在不结束会话的情况下更新 JWT?
这实际上是不可能的,因为它违背了 jwts 无状态的目的。但是,在这个特定的用例中,更新配置文件后,您可以创建一个新的 jwt 并将其添加为响应的一部分,以便客户端获取新令牌并将其用于进一步的请求
根据我的研究,解决方案是:
每次个人资料更新后自动重复登录,或通知最终用户并让他们选择是否要重复登录。