5

カスタム 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 が必要なため、列挙型を使用しています。

4

1 に答える 1