在 Angular 2 中使用集成 Windows 身份验证调用 Web 服务
Calling Web Service using Integrated Windows Authentication in Angular 2
我有两个应用程序。一个是 ASP.NET 核心 Web API REST Web 服务,它是 运行 在 http://localhost:59944 and the other one is an ASP.NET Core application using Angular 2 running at http://localhost:63888/。
我想通过 REST Web 服务加载 JSON 数据。
Exception: Call to Node module failed with error: Response with status: 401 null for URL:
Microsoft.AspNetCore.NodeServices.HostingModels.HttpNodeInstance+<InvokeExportAsync>d__7.MoveNext()
状态代码 401 似乎是未经授权的异常。
Web API 项目正在使用集成的 Windows 身份验证。
如果我通过浏览器调用 Web API 方法,它工作正常。如果我通过 Angular 2 调用它,我会收到错误消息。
我已经配置 ASP.NET Core 以允许这样的 CORS:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseCors(builder =>
builder.WithOrigins("http://localhost:63888"));
app.UseMvc();
}
Angular2 中的 web Ssrvice 方法调用如下所示:
this.http.get('http://localhost:59944/api/myWebServiceMethod)
.map((response: Response) => response.json())
.subscribe(peopleStatistics => {
return peopleStatistics;
});
如何进行身份验证?
当使用 Internet Explorer 并直接调用 Web 服务时,我不必输入我的用户名和密码,因为浏览器使用当前登录用户的凭据进行身份验证。是否可以通过 Angular 2 通过 Web 服务调用来执行此操作?我的意思是,是否可以使用 Windows 集成身份验证在用户无需输入用户名和密码的情况下使用 Web 服务?
尝试通过网络电话使用选项
let options = new RequestOptions({ headers: headers, withCredentials: true });
检查 Views\Home\Index.cshtml
并替换:
<app asp-prerender-module="ClientApp/dist/main-server">Loading...</app>
和
<app asp-ng2-prerender-module="ClientApp/dist/main-server">Loading...</app>
或删除 asp-prerender-module
(如果不需要):
<app>Loading...</app>
我有两个应用程序。一个是 ASP.NET 核心 Web API REST Web 服务,它是 运行 在 http://localhost:59944 and the other one is an ASP.NET Core application using Angular 2 running at http://localhost:63888/。 我想通过 REST Web 服务加载 JSON 数据。
Exception: Call to Node module failed with error: Response with status: 401 null for URL:
Microsoft.AspNetCore.NodeServices.HostingModels.HttpNodeInstance+<InvokeExportAsync>d__7.MoveNext()
状态代码 401 似乎是未经授权的异常。
Web API 项目正在使用集成的 Windows 身份验证。 如果我通过浏览器调用 Web API 方法,它工作正常。如果我通过 Angular 2 调用它,我会收到错误消息。
我已经配置 ASP.NET Core 以允许这样的 CORS:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseCors(builder =>
builder.WithOrigins("http://localhost:63888"));
app.UseMvc();
}
Angular2 中的 web Ssrvice 方法调用如下所示:
this.http.get('http://localhost:59944/api/myWebServiceMethod)
.map((response: Response) => response.json())
.subscribe(peopleStatistics => {
return peopleStatistics;
});
如何进行身份验证? 当使用 Internet Explorer 并直接调用 Web 服务时,我不必输入我的用户名和密码,因为浏览器使用当前登录用户的凭据进行身份验证。是否可以通过 Angular 2 通过 Web 服务调用来执行此操作?我的意思是,是否可以使用 Windows 集成身份验证在用户无需输入用户名和密码的情况下使用 Web 服务?
尝试通过网络电话使用选项
let options = new RequestOptions({ headers: headers, withCredentials: true });
检查 Views\Home\Index.cshtml
并替换:
<app asp-prerender-module="ClientApp/dist/main-server">Loading...</app>
和
<app asp-ng2-prerender-module="ClientApp/dist/main-server">Loading...</app>
或删除 asp-prerender-module
(如果不需要):
<app>Loading...</app>