gpt4 book ai didi

entity-framework - 为什么 [Authorize(Roles = "Admin")] 不能在带有 ASP.NET Identity 的 MVC 5 RTM 中工作?

转载 作者:行者123 更新时间:2023-12-03 22:20:20 25 4
gpt4 key购买 nike

是否[Authorize(Roles = "Admin")]使用 ASP.NET Identity 在 MVC 5 RTM 中开箱即用?

我没有运气。请注意 [Authorize][Authorize(Users = "AdminUser")]工作正常,并且 AspNetUserRoles 和 AspNetRoles 表已按照我的预期填充,从而在 AdminUser 用户和 Admin 角色之间建立了关系。这个问题似乎特定于角色。

最佳答案

用户可能需要重新进行身份验证才能接收包含管理员角色成员身份的新声明。由于 MVC 5 开箱即用地使用 ASP.NET Identity,并且在 MVC 5 中默认情况下,ASP.NET Identity 在用户的 cookie 中存储类似角色的声明,该信息可能会变得陈旧(因此数据库说了一件事,但用户的 cookie 说别的东西)。重新验证用户将刷新他们的声明,包括用户角色声明,以匹配数据库的当前状态。

例如:

如果用户在被分配到数据库中的 Admin 角色之前登录,该用户将被授予声明,但不会包括他们对 Admin 角色的分配。如果稍后将他们添加到管理员角色,则不会自动更新存储在其 cookie 中的声明。而是仅更新了数据库,应用程序必须重新验证它们,然后他们的旧声明将被包含管理员角色成员身份的新声明替换。让用户手动退出并重新登录,是重新验证该用户的最明显方式。

这是一篇关于 Using Claims in ASP.NET Identity 的文章

关于entity-framework - 为什么 [Authorize(Roles = "Admin")] 不能在带有 ASP.NET Identity 的 MVC 5 RTM 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20428405/

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