我在JWT Auth中使用AngularJs。我已经制作了api并且我已经测试过了。
对于每个请求,api都期望一个令牌,并且每个响应都会返回一个令牌对象。但是,当我这样尝试时:
employeeAppModule.config([
'$httpProvider',
function ($httpProvider) {
$httpProvider.interceptors.push(function () {
var token, headers, $cookies;
//inject cookies
angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
$cookies = _$cookies_;
}]);
return {
request: function (request) {
token = $cookies.get('jwt-token');
headers = request.headers || (request.headers = {});
if(token != null && token != 'undefined') {
headers.Authorization = token;
}
return request;
},
response: function (response) {
if (typeof response.data.result === 'undefined') {
return response;
}
if(response.status && response.status.code === 401) {
alert('token wordt verwijderd');
}
if(response.data && response.data.result.token && response.data.result.token.length > 10) {
$cookies.put('jwt-token', 'Bearer ' + response.data.result.token);
}
return response;
}
};
});
}]);
它无法正常工作。如果我在请求/响应之间放置了几个警告框,它就会正常工作。我怎么能解决这个问题?
答案 0 :(得分:1)
您在Authorization
变量上设置headers
属性,然后返回request
。
request.headers = headers;
return request;
这应该可以解决问题。
但有几件事情:
Bearer
放入Cookie本身,只需在每次请求时将其添加到标题中,它就会更优雅。