我的 Web 应用程序有一个登录页面,该页面通过 AJAX 调用提交身份验证凭据。如果用户输入了正确的用户名和密码,那么一切都没问题,但如果没有,则会发生以下情况:
在第三步之前,一切都很好。我不想弹出对话框,我想在我的 AJAX 回调函数中处理401响应。(例如,在登录页面上显示错误消息。)当然,我希望用户重新输入他们的用户名和密码,但我希望他们看到的是我友好、可靠的登录表单,而不是浏览器丑陋的默认认证对话框。
顺便说一句,我对服务器没有控制权,因此让它返回一个自定义状态代码(即,除了401以外的其他代码)是不可取的。
有什么办法可以禁止身份验证对话框?特别是,我是否可以在 Firefox2或更高版本中禁止显示“身份验证必需”对话框?有没有办法在 IE6或更高版本中取消连接到 [主持人]对话框?
剪辑
来自作者的补充信息(9月18日) :
我应该补充的是,浏览器的身份验证对话框弹出的真正问题是,它给用户提供的信息不足。
用户刚刚通过登录页面上的表单输入了用户名和密码,他相信他已经正确地输入了这两个名字,并且他已经单击了提交按钮或者点击回车。他的期望是,他将被带到下一页,或者可能被告知,他输入的信息是错误的,应该再试一次。但是,他却看到了一个意想不到的对话框。
这个对话框没有确认他只是 是的输入用户名和密码的事实。它没有明确说明出现了问题,他应该再试一次。相反,对话框会向用户显示诸如“站点说: ‘ [王国]’”之类的隐晦信息其中 [王国]是一个只有程序员才会喜欢的简短域名。
Web 浏览器设计者需要注意: 如果对话框本身更加用户友好,那么没有人会问如何取消身份验证对话框。我使用登录表单的 完整的原因是我们的产品管理团队认为浏览器的身份验证对话框非常糟糕。