MVC - 动态角色管理

时间:2016-09-22 21:33:01

标签: c# asp.net-mvc custom-attributes action-filter asp.net-roles

我的用户具有以下角色之一:

  • RoleA(属性:AuthorizeRoleA)
  • RoleB(属性:AuthorizeRoleB)

在我的控制器中我想说:

具有 RoleA 类型角色的所有人 可以访问此控制器中的所有方法

[AuthorizeRoleA]
public class HomeController : Controller
{
        public ActionResult MethodOne()
        {
            return View();
        }

        public ActionResult MethodTwo()
        {
            return View();
        }

        //****** Make an exception ********
        //So in this case, let RoleA here, but let RoleB too.
        [AuthorizeRoleB] 
        public ActionResult MethodThree()
        {
            return View();
        }
}

我有另一个控制器:

具有 RoleB 类型角色的所有人 可以访问此控制器中的所有方法

只是 RoleB !没有其他人。

[AuthorizeRoleB]
public class AnotherController : Controller
{
        public ActionResult Index()
        {
            return View();
        }
}

因此,当用于装饰控制器时,这应该与Authorize属性类似,并且在同一个控制器内部使用AllowAnonymous时,但我不知道如何实现这一点自定义属性(过滤器)的行为。

我的目标是创建自定义属性,我可以说: 在AuthorizeRoleA中将包含n个角色 并且在AuthorizeRoleB中将包含其他角色。 但AuthorizeRoleA的优先级高于其他属性。

注意:也许这是重复的,但我没有找到与此问题类似的任何内容。

0 个答案:

没有答案