在没有登录提示的情况下,通过角度2访问经过Windows身份验证的Web API

Access windows Authenticated Web API through Angular 2 without login prompt(在没有登录提示的情况下,通过角度2访问经过Windows身份验证的Web API)
本文介绍了在没有登录提示的情况下,通过角度2访问经过Windows身份验证的Web API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在Angular2中开发了前端应用程序,在ASP.net web API中开发了后端应用程序。我已将Windows身份验证设置为启用,因为我希望检测发出请求的用户。这两个应用程序都托管在IIS服务器(Windows Server 2012)中。 当我加载角度应用程序时,它加载登录提示,当提供正确的用户凭据时,数据加载正确发生。 但我想知道一种方法,可以在没有登录提示的情况下加载它们,自动进行验证。

这是我在Web API中检测请求用户的方式。

string user = HttpContext.Current.Request.ServerVariables["LOGON_USER"]; //Get the current user...
userID = user.Split('\')[1]; 

这是从角度服务向Windows身份验证的Web API发送请求的TS脚本示例。

getPersonalInfo(): Observable<IPersonalInfo> {
        return this._http.get(localStorage.getItem('WebApiURL') +"api/PersonalInfo/" , { withCredentials: true })
            .map((response: Response) => <IPersonalInfo>response.json())
            .catch(this.handleError);
    }

重新启动浏览器时,此登录每次都会询问。

我想在不使用此登录名的情况下访问它们...

推荐答案

实际上,之所以会出现此登录提示,是因为两种技术(ASP.net和角度2)之间通过传递Windows凭据进行通信。因此在调用Windows认证的API时需要握手认证。

我很幸运地通过浏览器更改隐私设置找到了解决方案。因此,我能够在没有登录提示的情况下调用API。

以下是实现这一点的方法。

设置->打开代理设置->隐私->站点

在这里,您可以添加已经托管后端API的域,如示例所示。 在此之后,它将被视为受信任域,并且不会出现任何登录提示。

这篇关于在没有登录提示的情况下,通过角度2访问经过Windows身份验证的Web API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
how do i pass parameters to aspnet reportviewer(如何将参数传递给aspnet report查看器)
Bind multiple parameters from route and body to a model in ASP.NET Core(在ASP.NET Core中将路由和主体中的多个参数绑定到一个模型)
Custom model binding in AspNet Core WebApi?(AspNet Core WebApi中的自定义模型绑定?)
How to minify in .net core mvc view?(如何在.Net核心MVC视图中缩小?)