Атрибут, наследующий от AuthorizeAttribute, не работает
В настоящее время я пытаюсь реализовать безопасность в новом приложении ASP MVC 5 на основе пользовательских ролей. Цель состоит в том, чтобы запретить пользователям доступ к определенным контроллерам или методам контроллеров, если у них нет определенной роли (или выше). Основываясь на том, что я прочитал по этому вопросу, я создал атрибут, который наследует AuthorizeAttribute, который выглядит следующим образом (MyAppRole - это перечисление, кстати):
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class AuthorizeRoleOrSuperiorAttribute : AuthorizeAttribute
{
private MyAppRole _authorizedRole;
public AuthorizeRoleOrSuperiorAttribute(MyAppRole authorizedRole)
{ //Breakpoint here
_authorizedRole = authorizedRole;
}
public override void OnAuthorization(HttpActionContext actionContext)
{ //Breakpoint here
base.OnAuthorization(actionContext);
if (!UserInfo.GetUserRoles().Any(r => (int)r >= (int)_authorizedRole))
throw new UnauthorizedAccessException(ErrorsModule.RoleMissing);
}
}
И я называю это так на методах и / или контроллерах:
[AuthorizeRoleOrSuperior(MyAppRole.Admin)]
public class MyController : Controller
{
[AuthorizeRoleOrSuperior(MyAppRole.Admin)]
public ViewResult Index()
{
[...]
}
[...]
}
Я поместил точку останова в конструктор и метод OnAuthorization, но, когда я запускаю приложение и вызываю соответствующий контроллер или метод, я никогда не нажимаю ни на один из них, и действие вызывается, даже если я даже не вошел в систему.
Примечание: AuthorizeAttribute работает правильно, когда я его использую.
Любая идея, что может помешать атрибуту работать и фильтровать доступ?