我在我的应用程序中使用了jwt令牌中间件和Asp.Net.OpenIdConnect.Server。实际上,它工作正常。但是我在一件事上很困惑。如果使用令牌,则无法立即授予新的索赔或禁止我的用户。例如。我给我的用户访问令牌(有效期为2天)和刷新令牌(有效期为2周)。然后,我赋予该用户管理员权限。但是,只有当他的当前访问令牌到期时,他才能知道两天,并且认证服务器将使用刷新令牌为他提供新的令牌。在下一个请求时,我如何立即给他新的权利?

我知道,我需要检查每个请求的数据库,并在需要时向用户提供新的访问令牌。但是在ASPNET 5中我应该在哪里做呢?也许对于这种事情有一些好的做法?

最佳答案

一种方法是在声明中放入一个唯一标识符,您可以查询该标识符是否仍然有效。您可以使用内存缓存来存储它,也可以使用某些分布式内存缓存(例如Redis)来存储,因此您不必每次都访问数据库。

禁止用户或添加令牌时,可以通过将其从缓存中删除来将该令牌标记为无效。每次用户刷新令牌时,都应在令牌内创建一个新的唯一ID。

07-26 04:02