Мне нужно разрешить нескольким ролям иметь доступ к методу в контроллере в C # Web API.
У меня есть пользовательский AuthorizeAttribute
, который принимает перечисление типа роли, как я могу сделать так, чтобы он принимал несколько перечислений т.е. массив перечислений переменной длины.
Это код, который я написал для Attribute
:
private readonly RoleEnum roleInApplication;
public ScopeAuthorizeAttribute(RoleEnum roleInApplication)
{
this.roleInApplication = roleInApplication;
}
public override void OnAuthorization(HttpActionContext actionContext)
{
base.OnAuthorization(actionContext);
.......
var relatedPermisssionRole = (db call to get the rolename..etc)
RoleEnum role;
if (Enum.TryParse(relatedPermisssionRole, out role) && role == roleInApplication)
{
// Succeed if the scope array contains the required scope
return;
}
}
HandleUnauthorizedRequest(actionContext);
}
А в контроллере я так и использую:
[ScopeAuthorize(RoleEnum.ADMIN)]
public async Task<IHttpActionResult> Create(MyModel model)
Как мне разрешить несколько ролей? например.
[ScopeAuthorize(RoleEnum.ADMIN, RoleEnum.USER)]
public async Task<IHttpActionResult> Create(MyModel model)