У меня возникли проблемы с моим пользовательским атрибутом AuthorizeAttribute.
public class ExplicitAuthorizeAttribute : AuthorizeAttribute
{
private readonly MembershipUserRole[] _acceptedRoles;
public ExplicitAuthorizeAttribute()
{
}
public ExplicitAuthorizeAttribute(params MembershipUserRole[] acceptedRoles)
{
_acceptedRoles = acceptedRoles;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
//Validation ...
}
}
Я использую это так:
[ExplicitAuthorize[(MembershipUserRole.Admin, MembershipUserRole.SuperAdmin)]
Он отлично работает для HttpGet и HttpPost для проверки моих контроллеров и методов.
Но когда я использую его в ApiController и делаю ajax-вызовы, AuthorizeCore не работает, и у меня возникает брешь в системе безопасности. :/
Мое перечисление выглядит так
[Flags]
public enum MembershipUserRole
{
Admin= 1,
SuperAdmin = 2
}
Кто-нибудь знает, почему мой AuthorizeCore не проходит проверку в этом контексте?
Кстати, если я использую
[Authorized(Roles ="Admin, SuperAdmin")]
Он отлично проверяется, но я хотел бы иметь строго типизированные роли, поэтому я использую перечисления.