WebApi中的ClassMethod属性

时间:2016-01-20 02:24:53

标签: c# asp.net-mvc asp.net-web-api

想要获得一些关于能够装饰WebApi控制器类和方法的建议。

  • 是否可以在类级别(而不是方法级别)添加“方法属性”?
  • 如何添加以enum作为参数的属性?例如。 [AuthorisedRoles(Roles.Developer,Roles.Testers,Roles.PM)]

提前感谢任何指示。

1 个答案:

答案 0 :(得分:0)

像这样(未经测试):

public class TestController : ApiController
{
    //[Authorize(Roles = "dev, user")]
    [EnumRolesAuthorise(UserRoles.Developer, UserRoles.Testers, UserRoles.PM)]
    public string Get()
    {
        throw new NotImplementedException();
    }
}

public class EnumRolesAuthoriseAttribute : AuthorizeAttribute
{
    public EnumRolesAuthoriseAttribute(params UserRoles[] roles)
    {
        Roles = string.Join(",", roles.Select(r => Enum.GetName(typeof (UserRoles), r)));
    }
}

public enum UserRoles
{
    Developer,
    Testers,
    PM
}

我相信您可以像操作[EnumRolesAuthorise]一样轻松地将[Authorize]应用于控制器。