我尝试使用 Angular 向 WebApi 服务器发出经过身份验证的请求。
这就是我提出请求的方式:
var config = {headers: {Authorization: "Bearer " + JSON.parse($cookies.token)}};
var url = 'http://localhost:53889/api/Values/5';
$http.get(url,config).success(function(response){
console.log(response);
})
这就是我设置身份验证的方式:
login: function(credentials){
return $http({
method: 'POST',
url: url + '/Token',
headers: {'Content-Type' : 'application/x-www.form-urlencoded'},
transformRequest : function(obj){
var str = [];
for(var p in obj){
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
},
data: credentials
});
var success = function(data){
AuthorizationFactory.setCurrentUser(credentials.username);
ApiFactory.init(data["access_token"]);
$cookieStore.put('token', JSON.stringify(data["access_token"]));
};
成功方法的调用如下:AuthorizationFactory.login(credentials).success(success)
。
但是每次我尝试发出经过身份验证的请求时,都会收到 401 错误消息。
标题看起来像这样:
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:ro-RO,ro;q=0.8,en-US;q=0.6,en;q=0.4
Authorization:Bearer "4N_9ScOCtFxTgNs....t"
Cache-Control:no-cache
Connection:keep-alive
Cookie:.AspNet.Cookies=Rx...y0OTHrvE
Host:localhost:53889
Pragma:no-cache
Referer:http://localhost:53889/app/
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36
X-Access-Token:"\"4N_9ScO...XZ6t\""
我做错了什么?我缺少什么?
最佳答案
请勿在 Authorization
header 中使用引号。它应该看起来像这样:
Authorization: Bearer your_token_here
关于asp.net - Web api 和 Angularjs 身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28339627/