asp.net - 允许 ApiController 上的匿名应用程序

标签 asp.net asp.net-mvc asp.net-web-api active-directory windows-authentication

我正在使用 C# 和 .NET Framework 4.5.1 开发一个带有 Web Api 服务的 ASP.NET MVC 5 应用。

我已启用<authentication mode="Windows" />Web.config并在 ASP.NET MVC Controller 上添加了以下内容:

[Authorize(Roles = @"MyDomain\MyRole")]
public class ReportController : Controller

但我不需要 ApiController 上的 Windows 身份验证。如何启用对 ApiController 的匿名访问是吗?

最佳答案

要为 webapi 执行此操作,您可以在 Web.Config 中使用以下内容

<location path="api">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
 </location>

这意味着对于 api Controller ,允许任何用户(用 ? 表示)。如果您想做特定的 Controller ,可能值得将其更改为更具体。

它还假设您拒绝所有匿名用户的访问,并且您的 web.config 身份验证如下

<system.web>   <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>  </system.web>

但是,如果您想在 MVC Controller 上允许它,您可以使用 [AllowAnonymous] 属性。

相关: Use Anonymous authentication in MVC4 on single controller when the whole application uses Windows Authenticaion

Disable Windows Authentication for WebAPI

Windows Authentication for ASP.NET MVC 4 - how it works, how to test it

补充阅读:

Windows Authentication ASP.NET

Authorize Attribute MSDN

Anonymous Attribute MSDN

关于asp.net - 允许 ApiController 上的匿名应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30589585/

相关文章:

c# - 如何在 ASP.NET Web API Core 应用程序上使用 QUARTZ 实现调度程序?

asp.net - 'Access-Control-Allow-Origin' header 包含多个值 '*, *',但只允许一个

javascript - 使用 jQuery 的 ASP.NET Telerik 控件样式

asp.net - Javascript 与 ASP.NET 代码一起工作

c# - 为什么我的 ASP 服务器返回此消息

c# - 创建返回多条错误消息的自定义 ValidationAttribute 类

c# - 从客户端获取修改后的对象并将其与服务器上的原始对象组合

具有 CRUD 角色的 ASP.NET MVC 授权

c# - 在 Web API 中正确使用 async/await

asp.net-web-api - 如何使用 asp.net web api 2.2 将 OData v4 端点的引用添加到 mvc 客户端应用程序