允许在 ApiControllers 上匿名应用

Van*_*nel 2 asp.net asp.net-mvc active-directory windows-authentication asp.net-web-api

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

我已经启用<authentication mode="Windows" />Web.config,并添加对ASP.NET MVC控制器的情况如下:

[Authorize(Roles = @"MyDomain\MyRole")]
public class ReportController : Controller
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*onE 5

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

<location path="api">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
 </location>
Run Code Online (Sandbox Code Playgroud)

这就是说对于 api 控制器,允许任何用户(用 ? 表示)。如果您想做特定的控制器,可能值得将其更改为更具体。

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

<system.web>   <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>  </system.web>
Run Code Online (Sandbox Code Playgroud)

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

相关: 当整个应用程序使用 Windows Authenticaion 时,在单个控制器上使用 MVC4 中的匿名身份验证

为 WebAPI 禁用 Windows 身份验证

ASP.NET MVC 4 的 Windows 身份验证 - 它是如何工作的,如何测试它

补充阅读:

Windows 身份验证 ASP.NET

授权属性 MSDN

匿名属性 MSDN


归档时间:

查看次数:

3174 次

最近记录:

10 年,4 月 前