【发布时间】:2018-05-08 23:43:26
【问题描述】:
在 dot net framework 4.6.1 上使用 Angular 5 和 Web Api 版本为 5.2.3 开发新应用程序。该 api 只是一个新的 Web Api 项目,在 VS2017 上创建了个人身份验证。 api 的唯一变化是 Startup.Auth.cs 中的以下行,添加了 Cors 库以允许 cors。
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
从 Angular 应用程序,登录和注册工作正常,但在调用 Web Api 时无法授权,包括 api/Account/Logout 等端点。
继续失败并出现此错误。没有 cors 错误。
此请求的授权已被拒绝。
角度代码。
var token = localStorage.getItem("accessToken");
let headers = new HttpHeaders();
headers.set('Authorization', 'Bearer ' + token);
this._http.post(environment.authApiUrl + 'api/Account/Logout', { headers: headers}).subscribe(
data => {
localStorage.removeItem("userName");
localStorage.removeItem("accessToken");
this.isLoggedin = false;
this._router.navigate(['/home']);
},
errors => console.log(errors)
);
我想不出我做错了什么,所以试图用 jquery 重写。奇迹般有效。 Api 完全没有变化。我在 Angular 中做错了什么?
var token = localStorage.getItem("accessToken");
var headers:any = {};
headers.Authorization = 'Bearer ' + token;
$.ajax({
type: 'POST',
url: environment.authApiUrl + 'api/Account/Logout',
headers: headers
}).done(function (data) {
toastr.info(JSON.stringify(data));
}).fail(function (err) {
toastr.error(JSON.stringify(err));
});
【问题讨论】:
-
请分享有关错误的详细信息。你想做什么,什么工作,究竟是什么错误......
标签: jquery angular authentication asp.net-web-api bearer-token