1
2
我详细调查了这个问题 posted my findings in the issue 是的。它确实是一个bug,但实际上对您的问题没有那么大的影响: 更改用户的角色不会使用户的安全戳失效,因此用户通过cookie接收的已发出声明标识实际上并不无效。因此,如果要在角色更改时使标识无效,则必须寻找其他解决方案。 但是,在我看来,你完全误用了这一点:如果你想刷新身份及其声明 每一个请求 ,那么实际上完全没有必要拥有索赔身份。运行身份验证堆栈不是免费的,而且必须运行整个验证和重新发出的管道将非常昂贵。当你真的不想 商店 不管怎么说,标识的使用时间更长(因为您在下一个请求中正确地使其失效),那么这真的是浪费了工作。 所以,如果你真的需要一个权限系统,绝对是尖锐和更新的时刻,当他们改变,然后考虑使用不同的东西。您可以建立一个单独的数据库,只需在其中存储“角色”,然后,当您访问受保护的内容时,只需在那里按需获取用户的角色来验证访问。这也将有助于您在每次请求时始终获取角色,因为现在您只能在需要时获取角色。 当然,你不会 需要 一个单独的数据库。您还可以使用identity的内置角色。你只需要记住那个角色 声称 并不总是事实的来源,因此您应该始终从数据库(通过用户管理器)加载用户角色。
实际上,使用asp.net内核可以很好地设计这个
authorization stack
是的。例如,可以为角色创建一个需求,然后实现一个授权处理程序,该处理程序通过遍历数据库来检查角色。这样,您就可以像为用户使用角色声明一样透明。你可以用同样的
|