好的,所以我有一个 Web 应用程序,我开发了一种混合身份验证模式。我制作了两个用于登录的页面(我使用的是 IIS7),一个用于名为 login.aspx 的表单登录,另一个用于名为 winlogin.aspx 的 Windows 登录。Web 配置如下所示:
<authentication mode="Forms">
<forms cookieless="UseCookies" defaultUrl="Default.aspx" loginUrl="Login.aspx" name="xxx" path="/" protection="All" timeout="30"></forms>
</authentication>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
<location path="WinLogin.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
在 IIS 中,我已将 winlogin 页面 Anonymous Authentication 设置为 disabled 并将 windows authentication 设置为 enabled ,因此我能够获取 windows 身份验证弹出窗口(用于 windows 用户名和密码)。一切正常,我正在向表单发送带有 ["LOGON_USER"] 的 cookie,并且用户已通过身份验证。问题是在尝试按下弹出窗口上的取消按钮时(在 IIS 7 上设置默认错误页面(401.htm、500.htm ...)和功能设置以在服务器错误上仅显示自定义错误页面,即 401 .htm 页面被带到我这里。这种行为没关系,但是当我更改自定义错误页面(针对 401 错误)以返回到 Login.aspx 时(因此用户可以使用基于表单的身份验证)当用户点击取消时按钮,发生了一些奇怪的事情。当我加载 WinLogin.aspx 时,弹出窗口没有 t 出现,我被自动重定向到 Login.aspx 。我不知道为什么要这样做,这意味着发生了服务器错误(401)。奇怪.. .此页面设置为 401 错误,但功能设置设置为:“本地请求和自定义的详细错误...”我的弹出窗口再次出现,并且可以进行身份验证。如果有人可以解释这种行为。