【发布时间】:2013-12-04 12:31:46
【问题描述】:
假设我有一个 ASP.NET MVC 4 应用程序。我需要为同一用户在不同页面上提供不同的权限。例如,同一用户可能是一个页面上的管理员和另一个页面上的访客。 MVC 默认提供系统范围的用户权限。 我挖掘了一些我应该使用自定义会员提供程序来实现我的目标的信息,但我还不确定这一点。 有人可以提出解决方案吗?
角色在相同类型的页面上的行为应该相同。假设论坛上的主题内容只能由创建它的人或版主编辑。然而,用户将无法编辑其他人的主题,并且主持人将无法编辑不属于他的主题主题组的主题。我的应用程序中的角色系统的行为应该类似。
【问题讨论】:
-
您只需自己实现逻辑即可。假设在
/foo/bar操作中,您只需在逻辑上检查用户是否处于角色中并允许或拒绝该操作,然后在/foo/baz中再次检查并允许或拒绝。但是,您应该注意,这会使事情复杂化。考虑拥有多个角色而不是单个角色,这在不同的控制器/动作中意味着不同的事情。 -
我会说考虑使用多个角色。例如而不是管理员考虑使用 SectionAdministrator 和 OtherSectionGuest。
-
您可以将 AuthorizeAttribute 放在控制器的操作上,并为用户提供应该有权访问特定操作的用户属性。
标签: asp.net-mvc asp.net-mvc-4 roles membership