Angular 调用 Web API 以使用 owin 登录令牌



我刚开始使用 angular,我在调用验证我的 Web API 时遇到了问题。 我的 web api 使用 Owin,我已经在旧的 asp 站点上使用了它。 我打电话给 ajax 没有问题:

$.ajax({url: _TokenApi, 类型:"开机自检", 数据类型:"json", contentType: 'application/x-www-form-urlencoded;字符集=UTF-8', 标头:{ "Content-Type":"application/x-www-form-urlencoded", "授权":_CLIENTAUTH }, 数据:身体, 完成: 函数(结果( {

},
success: function(result) {
sessionStorage.setItem(_GLOBALPREFIX+'xms_token',result.access_token);
xms_Login_ok(dataLogin);
},
error: function(result) {
xms_alert('warning', 'Attenzione', 'Token non recuperato correttamente');
},
}); 

我想用角度做同样的调用,我找到了一个这样的例子

UserAuthenticationOriginal(UserName: string,Password: string(:Observable{let credentials='username=' +UserName + '&
password=' +Password +'&grant_type=password';
var reqHeader = new HttpHeaders({'Content-Type': 'application/x-www-urlencoded','No-Auth':'True' }(;
返回 this.http.post(这。ApiUrl+'token',encodeURI(credentials(,{headers:reqHeader}(;
}

此函数到达 Web API,但显然它没有进行身份验证,因为我调用了: "无身份验证":"真">

我试图替换为 headers.set('Content-Type', 'application/x-www-form-urlencoded'(; headers.set("Authorization", 'BASIC XXXXXXX'(; 让凭据="用户名=" +用户名 + "&密码=" +密码 +"&grant_type=密码"; 设 a= this.http.post(this.ApiUrl+'token',encodeURI(credentials(,{headers:headers}(;

但是我有一个错误: 错误类型错误: "this.api.UserAuthentication(...(未定义">

并且不对 Web API 进行任何调用

我的问题出在拦截器中。 这项工作:

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if(window.sessionStorage.getItem('userToken')!=null){
request = request.clone({
headers:request.headers.set("Authorization","Bearer " +window.sessionStorage.getItem('userToken'))  
.set("Content-type", "application/json") 
});
}else{
this.router.navigateByUrl("/login");
}
return next.handle(request);
}

最新更新