【问题标题】:Bypass windows authentication on a controller MVC在控制器 MVC 上绕过 Windows 身份验证
【发布时间】:2015-08-04 02:24:56
【问题描述】:

我在我的 mvc Web 应用程序上启用了 Windows 身份验证,但我需要在第一页上绕过它(这样任何人都可以访问 HomeController\Index)。如何实现?

这是我的身份验证逻辑:

<location path="~/DashboardController" />
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Windows" />
    <authorization>
      <allow users="Domain\MyUserName"/>
      <deny users="*" />
    </authorization>
  </system.web>

我尝试使用[Authorize][Authorize(Users="*")] 装饰默认仪表板控制器操作,但是当我尝试访问主页时,浏览器会提示输入凭据

【问题讨论】:

  • 我也有同样的问题。启用 Windows 身份验证时 [AllowAnonymous] 不起作用。浏览器总是提示输入凭据以进行身份​​验证。
  • @revobtz 问题解决了吗?

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5


【解决方案1】:

[AllowAnonymous] 属性添加到您的 Index 方法中

[AllowAnonymous]
public ActionResult Index()
{
    ViewBag.Message = "Welcome to ASP.NET MVC!";

    return View();
}

或者,如果您出于某种原因不想使用属性,您可以通过 web.config 允许这样做。 (我会尽可能避免使用 web.config 并使用属性。See this blog from Jon Galloway for more info

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

【讨论】:

  • 我已经尝试过了,当我运行 Web 应用程序时,Chrome 中仍然会出现身份验证对话框
  • 您是否在 IIS 中以 Windows 身份验证和匿名身份验证模式运行该站点?
  • 我仍在做开发,尝试使用 IISExpress 从 VS 2013 运行它。如果我在其上设置断点,它甚至不会触发 Action 方法。就像在选择之前启动身份验证向上 [AllowAnonymous]
  • 因此,如果您在 VS2013 中单击 Web 应用程序并查看属性窗口(@98​​7654325@、P),您应该会看到 Anonymous AuthenticationWindows Authentication 的选项 - 这些都应该启用。
  • 它说 WIndowsAUthentication=Enbaled 和 AnonymousAuthentication=Disabled。我尝试启用 AnonymousAUthentication 并尝试运行该站点,但仍然遇到同样的问题
猜你喜欢
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2013-05-05
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多