gpt4 book ai didi

node.js - jwt token 如何确保数据库更改时更新有效负载

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:12 24 4
gpt4 key购买 nike

我对 JWT token 类型身份验证的概念有疑问。因此,假设我在用户登录后签署了 jwt token , token 有效负载包含用户名和 userRole。然后,我将 token 返回给用户并存储在用户的 localStorage 中。

现在,如果我更改数据库中的用户角色,即从普通用户更改为管理员用户,如何确保用户 localStorage 上的有效负载也发生变化?

如果用户是管理员用户,当他登录时,jwt 会存储在他的 localStorage 中,我遇到一个问题。之后,我将他的角色设置为普通用户,他仍然可以访问管理功能,因为他的 localStorage 包含 AminUser 的角色。

有人可以建议一种正确的方法来实现授权,以便在用户端更新 token 吗?谢谢。

最佳答案

更改用户授权的触发因素是什么?如果您说您正在打开数据库客户端(例如 MySQL 或 PostgreSQL)并手动更改用户的授权,那么您的服务器或客户端无法知道该更改(至少据我所知),并且它们无法对该特定更改使用react。

如果您的触发器是用户发送的某些请求,例如注销更改授权,那么您应该使用该特定请求的新 token 进行响应并存储它,很简单。

如果您的触发器与您的客户端无关,并且它以某种方式发生在您的服务器端,那么您应该在服务器和客户端之间打开一个套接字,并将该更改从服务器发送到客户端。

这样您就可以确保客户端始终是最新的。

但这仍然不够,因为是的,您要让客户端保持最新状态,但是如果他保存 token 并在您更新后替换它怎么办?即使您告诉他们他们只是普通用户,他/她仍然可以访问管理功能。为此,您需要验证任何用户发出的每个请求,并首先检查他们是否被允许发出该请求。

关于node.js - jwt token 如何确保数据库更改时更新有效负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com