我正在尝试为我的Web应用程序使用混合身份验证。我正在使用本文中的答案类似的方法:与ASP.NET使用混合模式身份验证时如何配置IIS7。
除了我希望登录。在login.aspx的page_load事件中,我会检查用户的IP地址,如果它是内部地址,请将其重定向到WindowsLogin.aspx。我希望内部用户自动登录。外部用户必须输入表单凭据。
我的web.config已关闭匿名auth,Windows auth为Windowslogin.aspx打开了。但是,当我登录此页面时,我会被发送到重定向循环中。它试图将我送回login.aspx,而无需提示我获得Windows凭据或加载页面。在提琴手中,我可以在这两页之间看到302的来回。
似乎在windowslogin.aspx上,它仍在寻找表单auth令牌,它找不到它,并将您送回login.aspx。如何让Windowslogin.aspx页面加载并提示Windows凭据?
<authentication mode="Forms">
<forms cookieless="UseDeviceProfile" defaultUrl="~/Default.aspx" enableCrossAppRedirects="true" loginUrl="~/Login.aspx" name=".ASPXAUTH" path="/" protection="All" requireSSL="false" slidingExpiration="true" timeout="10080"/>
</authentication>
<location path="Login.aspx">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true"/>
<windowsAuthentication enabled="false"/>
</authentication>
</security>
</system.webServer>
</location>
<location path="WindowsLogin.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false"/>
<windowsAuthentication enabled="true"/>
</authentication>
</security>
</system.webServer>
</location>
expliclity禁用Windowslogin.aspx Page