运行ASP.NET MVC 4应用程序的IIS 7。我已在IIS中为网站启用了基本身份验证,并禁用了所有其他身份验证类型。当用户到达站点时,会向他们显示auth challenge弹出窗口,他们使用其域凭据进行身份验证。
但是,在成功验证后,它们将被重定向到`/login.aspx?ReturnURL=originalPath。
理想情况下,我希望重定向将其发送回原始请求的网址。我怎么能这样做?
为了更具体地说明我要完成的工作,我们在http://nuger.ourdomain.com/nuget运行了一个内部NuGet Feed。 NuGet支持基本身份验证。但是,由于此错误的重定向,我的nuget.exe install
命令失败。 e.g。
https://nuget.ourdomain.com/nuget -> password challenge
-> redirects to https://nuget.ourdomain.com/login.aspx?ReturnUrl=%2fnuget
-> Returns 404 Not Found because there is no login.aspx on this MVC app
-> NuGet sees the 404 and sees that something failed,
so prompts for passsword again, ad infinitum
如果我在浏览器中浏览https://nuget.ourdomain.com/nuget
,我可以直接看到此行为 - 我获得了auth挑战,然后重定向到/login.aspx?ReturnUrl=%2fnuget。此时,如果我手动转到我的原始目标网址,它会正常加载。
使用基本身份验证方法可以将正确的重定向恢复到原始请求网址吗?
答案 0 :(得分:1)
默认情况下,启用ASP.NET MVC启用的表单身份验证,因此即使我没有在IIS中启用它,也没有在我的web.config中启用它,它仍然被使用。我不得不将以下内容添加到我的web.config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />
</modules>
<system.webServer>
然后它停止重定向到login.aspx。而且,奖金,它似乎与NuGet一致!