【问题标题】:what is best practice to store user permissions in JWT token?在 JWT 令牌中存储用户权限的最佳做法是什么?
【发布时间】:2021-11-28 02:40:53
【问题描述】:

我们的系统架构就像管理员可以在用户级别分配权限。我们正在使用 JWT 令牌进行授权,以前我们使用角色,并且角色被添加到服务器端的有效负载中,我们检查该角色并相应地允许/禁止而不访问数据库。但是当我们在 JWT 令牌中添加权限时,它的负载太重并且影响网络流量。 所以我的问题是处理 JWT 令牌中的用户群权限的最佳做法是什么。

【问题讨论】:

  • 您尝试压缩 JWT 了吗?

标签: permissions jwt


【解决方案1】:

我认为这没有“最佳实践”,因为将用户的权限存储在 JWT 中听起来并不可取,原因如下:

由于 JWT 必须包含执行请求所需的所有信息,因此如果在任何给定时间用户的权限被删除,只要他的 JWT 尚未过期,他将继续拥有这些权限一段时间。也就是说,使用您描述的方法,向用户添加或删除权限并不是立即发生的效果,因此有必要开发机制以使这些更改的效果立即生效。另外,我认为用户的权限可以归类为敏感信息,不建议将敏感信息存储在 JWT 中(因为任何人都可以看到)。

如果您想继续这样做,您可以为权限分配标识符(例如小数字)并将这些标识符和权限存储在服务器的 RAM 中(例如,使用字典或哈希表)。最后,在 JWT 中您只需要存储权限的标识符,从而尽可能节省空间。这样就不用打数据库了。

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 2021-01-22
    • 2016-08-06
    • 2019-07-28
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多