WebAPI 中的 ClassMethod 属性

本文关键字:属性 ClassMethod 中的 WebAPI | 更新日期: 2023-09-27 18:31:01

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

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

提前感谢任何指示。

WebAPI 中的 ClassMethod 属性

像这样的东西(未经测试):

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]