我有一个ASP.NET OData站点,该站点在WebApiConfig文件中具有以下内容:
config.Filters.Add(new AuthorizeAttribute())
这将强制所有调用方在调用任何控制器之前进行身份验证。
不幸的是,这也迫使用户认证访问“ $ metadata” URL。
我需要全局强制所有控制器访问进行身份验证,同时还允许匿名访问“ $ metadata” URL。
最佳答案
创建一个从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());
关于asp.net - 当站点具有全局AuthorizeAttribute时,ASP.NET允许匿名访问OData $ metadata,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35894875/