asp.net – 在未经授权的请求后禁止NTLM对话框
|
在最近的一个sharepoint项目中,我实现了一个身份验证webpart,它应该取代NTLM身份验证对话框.只要用户提供有效凭据,它就可以正常工作.每当用户提供无效凭据时,Internet Explorer中都会弹出NTLM对话框. 我通过XmlHttpRequest进行身份验证的Javascript代码如下所示: function Login() {
var request = GetRequest(); // retrieves XmlHttpRequest
request.onreadystatechange = function() {
if (this.status == 401) { // unauthorized request -> invalid credentials
// do something to suppress NTLM dialog box...
// already tried location.reload(); and window.location = <url to authentication form>;
}
}
request.open("GET","http://myServer",false,"domainusername","password");
request.send(null);
}
我不希望在用户提供无效凭据时显示NTLM对话框.相反,应该执行身份验证表单中的登录按钮的回发.换句话说,浏览器不应该发现我的未经授权的请求. 有没有办法通过Javascript这样做? 解决方法Mark的评论是正确的; NTLM身份验证提示由401响应代码触发,并且NTLM的存在是WWW-Authenticate头中提供的第一个机制(参考号: The NTLM Authentication Protocol).我不确定我是否正确理解了问题描述,但我认为您正在尝试为SharePoint包装NTLM身份验证,这意味着您无法控制服务器端身份验证协议,对吗?如果您无法操纵服务器端以避免在失败的凭据上发送401响应,那么您将无法避免此问题,因为它是(客户端)规范的一部分: The XMLHttpRequest Object
因此,如果在XMLHttpRequest中收到任何401响应,则规范实际上要求浏览器相应地提示用户,就像用户直接访问了URL一样.据我所知,据我所知,真正避免这种情况的唯一方法就是让你控制服务器端并避免401 Unauthorized响应. 最后一个想法是,您可以使用代理来解决这个问题,这是另一个Web服务器上的单独服务器端脚本.该脚本然后接受用户并传递参数并检查身份验证,以便用户的浏览器不是正在发出原始HTTP请求的内容,因此没有收到导致提示的401响应.如果以这种方式执行此操作,您可以从“代理”脚本中找到它是否失败,如果是,则再次提示用户,直到成功为止.在成功的身份验证事件中,您可以像现在一样简单地获取HTTP请求,因为如果正确指定了凭据,一切都可以正常工作. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – Structuremap – 多个接口实现
- 在加载asp.net页面时显示gif
- 在asp.net mvc中可以做一个通用的控制器吗?
- asp.net-mvc – requestValidationMode =“2.0”实际上是做
- asp.net-mvc – 2010初学者指南流利的nHibernate
- asp.net – System.Net.Mail新MailMessage随机发送重复的电
- asp.net-mvc-2 – JavaScriptSerializer没有正确反序列化Da
- 如何在ASP.net中取消事件冒泡?
- asp.net – 如何禁用谷歌chrome的建议列表使用twitter boot
- asp.net-mvc-4 – 如何在asp.net mvc4中将OpenID迁移到OAut
- asp.net – 如何迭代DataTable中给定行中的所有项
- 在Asp.net中加载平衡,在开发时我应该考虑什么?
- ASP.NET MVC3 AJAX.BeginForm AjaxOptions OnSuc
- asp.net – “%:”做什么?
- asp.net-mvc-3 – Razor in-line if语句不工作?
- asp.net-mvc – POST操作方法中强类型的ViewMode
- 如何在IIS 7.5上预热ASP.NET MVC应用程序?
- asp.net-mvc – 在asp.net MVC 3中授权登录URL
- 使用ASP.NET会话状态服务器(而不是InProc)的优点
- asp.net – SQL使用逗号分隔值和IN子句
