我的自定义 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")]
它验证得很好,但我想拥有 Stronly Typed Roles,这就是我使用枚举的原因。