2

WebApiConfig ファイルに次の ASP.NET OData サイトがあります。

config.Filters.Add(new AuthorizeAttribute())

これにより、コントローラーを呼び出す前に、すべての呼び出し元に認証が強制されます。
残念ながら、これにより、ユーザー認証で「$metadata」URL にアクセスすることも強制されます。
「$ metadata」URLへの匿名アクセスを許可しながら、すべてのコントローラーアクセスに対してグローバルに認証を強制する必要があります。

4

3 に答える 3

3

次のように、メソッドから派生しAuthorizeAttributeてオーバーライドするカスタム フィルターを作成します。IsAuthorized

public class CustomAuthorizationFilter : AuthorizeAttribute
{
    protected override bool IsAuthorized(HttpActionContext actionContext)
    {
        if (actionContext.Request.RequestUri.AbsolutePath == "/$metadata" ||
            actionContext.Request.RequestUri.AbsolutePath == "/%24metadata")
        {
            return true;
        }

        return base.IsAuthorized(actionContext);
    }
}

フィルターを登録します。

config.Filters.Add(new CustomAuthorizationFilter());
于 2016-03-09T18:04:35.030 に答える