我将用户角色存储在 JWT 中(以限制 API 端点)。管理员可以更改角色。
如果角色发生变化。我应该如何在所有 token 中反射(reflect)这一点?我想了几个解决方案:
有没有标准的方法来做到这一点?
最佳答案
如果您关心所做的更改是即时的,刷新 token 似乎不是解决方案,如果您撤销用户的权限,您可能不希望用户在一段时间内访问审核工具。
你可以做的是在 jwt token 中保留一个相对于用户的版本号,就像 Mongoose 如何使用它的 versionKey .通过这样做,您将能够根据数据库中给定用户的版本检查此版本。每次更改此用户的角色时,都会增加此版本,如果 jwt 的版本不匹配,只需使用正确的角色和版本重新创建一个新的并将其发送回用户。
我不相信有一个合适的标准,因为 jwt 在设计上是不可变的,如果你需要“更新”它,你必须完全改变它。
关于authentication - 在 JWT 中更新/更改角色声明(或任何其他声明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43978021/