【发布时间】:2013-12-24 01:41:13
【问题描述】:
[Authorize(Roles = "Admin")] 在 MVC 5 RTM 中与 ASP.NET Identity 是否可以开箱即用?
我没有运气。请注意,[Authorize] 和 [Authorize(Users = "AdminUser")] 工作得很好,并且 AspNetUserRoles 和 AspNetRoles 表按照我的预期填充,建立了 AdminUser 用户和 Admin 角色之间的关系。这个问题似乎是特定于角色的。
【问题讨论】:
-
Authorize 属性在 MVC 5 和 ASP.NET Identity 中开箱即用。您遇到的问题的描述不是很清楚。您是说仅当您使用 Admin 角色而不是 AdminUser 角色时才会失败。显示一些关于您如何播种角色并将用户映射到角色的代码。
-
Authorize 确实可以开箱即用,但设置 Roles 不能按预期工作。当我的用户 AdminUser 被分配给角色 Admin 并且我应用
[Authorize(**Roles** = "Admin")]属性时,我收到访问被拒绝,这不是预期的。当我应用[Authorize(**Users**= "AdminUser")]属性时,我可以按预期进行访问。就我的种子代码而言,我的表看起来与 AspNetUserRoles 表中的 AdminUser 用户和 Admin 角色之间的关系完全一样。使用 Roles = "..." 对新的 MVC 5 站点有用吗? -
@KevinJunghans 我不知道这是否重要,但唯一未填充的表是 AspNetUserClaims 表。
-
声明是可选的,用于自定义授权过程。如果您想查看一个工作示例,请访问 SimpleSecurity Project simplesecurity.codeplex.com/SourceControl/latest#AspNetIdentity/…。您将看到在 Home 控制器中的 About 操作上使用了 AuthorizeAttribute。使用“用户”和“密码”登录,即可访问此视图。
-
谢谢@KevinJunghans。您的反馈鼓励我继续努力。
标签: entity-framework asp.net-mvc-5 asp.net-identity