【发布时间】:2018-12-25 08:46:27
【问题描述】:
我想从 Ionic 应用程序进行 NTLM 身份验证。使用邮递员(一种测试请求的工具),我能够进行此身份验证,并且效果很好(使用 NTLM 身份验证选项)。
但是,postman 没有提供任何代码来在 Angular (For Ionic) 中实现这个请求。
经过自己的研究,我发现Angular 2 及以上版本不支持NTLM 身份验证。真的是这样吗?
所以我想用 Jquery 和下面的代码(由邮递员生成)生成我的请求。 但它可以与 Ionic 一起使用吗?
这里是 Postman 为这个请求生成的 JQuery Ajax 实现:
var form = new FormData();
form.append("Login", "yakeri");
form.append("Password", "elcimai77");
var settings = {
"async": true,
"crossDomain": true,
"url": "https://myserver.com/MyService",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Cache-Control": "no-cache",
"Postman-Token": "50392b83-879b-43cb-ba2e-0b5ffc61e2f8"
},
"processData": false,
"contentType": false,
"mimeType": "multipart/form-data",
"data": form
}
$.ajax(settings).done(function (response) {
console.log(response);
});
【问题讨论】:
-
检查this link 看看是否有帮助。
-
NTLM 支持与浏览器有关,与您使用的任何 JS 库无关。是什么让您认为 Angular 特别不支持它?所有这些库——jQuery、Angular 等只是浏览器实现 JavaScript 能力之上的语法糖。就 ajax 而言,它们都只是在流程结束时将您的代码转换为原生 XHR 请求。在那些框架中,你无法做任何通过编写 vanilla JavaScript 无法做到的事情。
-
关于第二个问题,任何HTTP服务器都可以接收HTTP请求,无论是通过AJAX生成的、普通的浏览器请求,还是其他工具如Postman或您自己定制的HTTP客户端,或其他什么,这无关紧要。至于 Ionic,它只是一个代码框架。在这种特殊情况下,NTLM 支持将成为 Web 服务器本身的一部分,而不是本身运行在另一个框架之上的代码框架。
-
如果你不使用 IIS 作为你的网络服务器,NTLM 支持将会很薄弱,我不清楚你为什么要开始使用新的东西 -这是旧技术。微软自己在几年前就开始偏爱 Kerberos,而在 Windows 世界之外,很少有人采用它。如果您想要一个现代的、跨平台的身份验证系统,请尝试使用 OAuth 之类的东西,其中已经存在您可以利用的知名、强大的实现。
-
另一个令人困惑的事情...
var form = new FormData(); form.append("Login", "yakeri"); form.append("Password", "elcimai77");在您的请求数据中。所以...如果您在请求中提供用户名和密码,这意味着某种基于表单的身份验证系统?在那种情况下,您为什么还需要/想要 NTLM?没有意义。
标签: javascript jquery ajax angular ionic-framework