Authorize Attribute with Multiple Roles

前端 未结 5 1292
长发绾君心
长发绾君心 2020-12-02 07:00

I would like to add Authorization to a controller, for multiple Roles at once.

Normally that would look like this:

[Authorize(Roles = \"RoleA,RoleB,R         


        
5条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-02 07:21

    Try to create custom authorize attribute like this.

    public class AuthorizeRolesAttribute : AuthorizeAttribute
    {
        public AuthorizeRolesAttribute(params string[] roles) : base()
        {
            Roles = string.Join(",", roles);
        }
    }
    

    Assuming your roles will be the same for multiple controllers, create a helper class:

    public static class Role
    {
        public const string Administrator = "Administrator";
        public const string Assistant = "Assistant";
    }
    

    Then use it like so:

    public class MyController : Controller
    {
        [AuthorizeRoles(Role.Administrator, Role.Assistant)]
        public ActionResult AdminOrAssistant()
        {                       
            return View();
        }
    }
    

提交回复
热议问题