菜鸟教程小白 发表于 2022-12-12 18:40:50

ios - ionic NTLM 身份验证 - IIS


                                            <p><p>我正在使用 Ionic 框架构建一个 iOS 移动应用程序。该应用程序将访问 API,这些 API 将由使用集成 Windows 身份验证的 IIS 上托管的 ASP.NET 5 (MVC 6) 应用程序提供服务。服务器已经有一个使用 AngularJS 客户端的 Web 界面。我一直在尝试从 Ionic/AngularjsController 中获取对服务器的 $http 调用,并且没有通过 IIS 集成 Windows 身份验证(我尝试在设备/模拟器以及 ionic serve 上运行)。我总是收到 401 Unauthorized 错误。我尝试将 withCredentials 设置为 true 并在请求中传入用户名/密码,但没有成功。当我尝试从 iPhone(非 Windows 环境)上的 safari 访问 API URL 时,我确实得到了浏览器身份验证弹出窗口,它在输入我的 Intranet windows 用户名密码时成功登录。 </p>

<p>我最初遇到了一些 CORS 问题,我通过在服务器端添加 CORS 服务并允许所有来源来解决这些问题。在使用 ionic 服务进行测试时,我还设置了代理以避免 CORS 问题。有没有人做过这样的事情?这是我的 Controller 代码:</p>

<pre><code>angular.module(&#39;starter.controllers&#39;, [])

.controller(&#39;AppCtrl&#39;, function($scope, $ionicModal, $http) {
$http.defaults.useXDomain = true;
$http.defaults.withCredentials = true;
// Form data for the login modal
$scope.loginData = {};
// Create the login modal that we will use later
$ionicModal.fromTemplateUrl(&#39;templates/login.html&#39;, {
    scope: $scope
}).then(function(modal) {
    $scope.modal = modal;
});
// Triggered in the login modal to close it
$scope.closeLogin = function() {
    $scope.modal.hide();
};
// Open the login modal
$scope.login = function() {
    $scope.modal.show();
};

// Perform the login action when the user submits the login form
$scope.doLogin = function() {
    console.log(&#39;Doing login&#39;, $scope.loginData);
    $http.post(&#39;http://localhost:8100/api/APIAccount/Login&#39;,{withCredentials:true})
    .then(function(response)
{
   console.log(&#39;success&#39;);
}, function(error){
   console.log(&#39;error&#39;);
});

};
});
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>经过几个小时的故障排除后,它就像设置 ASP.NET 5 CORS 服务以允许凭据一样简单。在 ConfigureServices 函数的 Startup.cs 文件中,我必须输入以下内容。希望这对将来的其他人有所帮助。</p>

<pre><code>services.AddCors(options =&gt;
               {
                options.AddPolicy(&#34;AllowAllOrigins&#34;,
                builder =&gt; builder.WithOrigins(&#34;http://&lt;domainname&gt;&#34;)
                .AllowCredentials());
               });
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios -ionicNTLM 身份验证 - IIS,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35639691/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35639691/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - ionic NTLM 身份验证 - IIS