gor*_*oth 2 asp.net odata asp.net-web-api asp.net-web-api2 odata-v4
我有一个 ASP.NET OData 站点,它在 WebApiConfig 文件中包含以下内容:
config.Filters.Add(new AuthorizeAttribute())
Run Code Online (Sandbox Code Playgroud)
这会强制所有调用者在调用任何控制器之前进行身份验证。
不幸的是,这也强制用户身份验证访问“$metadata” url。
我需要对所有控制器访问进行全局强制身份验证,同时还允许匿名访问“$metadata” url。
我意识到这个问题已经得到了回答,但我对接受的答案有一些担忧:
我同意创建自己的AuthorizeAttribute,但我会以稍微不同的方式实现该方法。
protected override bool IsAuthorized(HttpActionContext actionContext)
{
if (actionContext.ControllerContext.Controller is System.Web.OData.MetadataController)
return true;
return base.IsAuthorized(actionContext);
}
Run Code Online (Sandbox Code Playgroud)
我的解决方案只是检查正在访问的控制器是否是 OData 的 MetadataController。如果是,则允许任何人访问,否则,通过正常的授权检查。
| 归档时间: |
|
| 查看次数: |
1832 次 |
| 最近记录: |