本文介绍了在没有登录提示的情况下,通过角度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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!