gpt4 book ai didi

asp.net-core - Asp.Net Core Identity - 使用角色和缓存授权属性?

转载 作者:行者123 更新时间:2023-12-05 07:17:36 25 4
gpt4 key购买 nike

我在 ASP.Net Core 中有一个带有 ASP.Net Core Identity 的简单 Web 应用程序。我在各种 Controller 上使用基于角色的授权,在我看来,Authorize 属性没有正确获取角色成员资格的更改。

假设我用 authorize 属性装饰了一个 Controller 并指定了一个角色,如下所示:

[Authorize(Roles = "TestRole")]

然后我以不属于该角色的用户身份登录。我尝试访问 Controller ,但 Authorize 属性正确地阻止我访问 Controller - 给我一个访问被拒绝的错误。

然后我以编程方式将用户添加到 TestRole(我在 Web 应用程序中构建了一个简单的用户管理 GUI,我可以在其中管理用户和角色)。根据 GetRolesAsync() 方法,用户已成功添加到角色,如果我检查数据库中身份表中的记录,一切看起来都很好。但是,我仍然无法访问 Controller - Authorize 属性似乎不知道用户现在处于此角色中。角色信息似乎被缓存了。如果我在重试之前等待足够长的时间(可能几个小时),那么这似乎可以正常工作。如果我终止 IIS 快速进程并重新启动网站,这会立即起作用,表明角色信息正在以某种方式被缓存。

我无法找到任何明确说明角色信息确实被缓存或如何禁用它的内容。当我更改系统中用户的角色成员资格时,我需要立即反射(reflect)更改。

有什么想法吗?

最佳答案

好的 - 多么典型。几天来我一直在努力解决这个问题,一旦我最终向 SO 提出问题,我就找到了答案:)

By default, ASP.Net Identity stores user's authorized roles inside Role Claim after user successful login. Those claims are stored inside cookie until user logout or close the browser.

Is it possible to cache authorizations in ASP.NET MVC & Identity 2.0?

关于asp.net-core - Asp.Net Core Identity - 使用角色和缓存授权属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58727287/

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