我有一个棱角分明的
$resource
用于登录和获取用户信息。登录将用户名和密码发送到服务器,并获得Bearer令牌。在
success
功能
User.login
令牌存储在
localStorage
在里面
getEmail
,我将令牌包含在用户电子邮件地址的标头中。
问题是,第一次
获取电子邮件
在控制器中调用,
$window.localStorage.getItem('TK')
计算结果为
null
但如果我刷新了页面,它就会正常工作。对包含令牌的服务器的所有后续请求都按预期工作。是什么原因导致的?
更不用说,
获取电子邮件
在登录后调用,并且我已确认令牌存在于
本地存储
在
获取电子邮件
被调用。
angular.module('authentication')
.factory('User', function ($resource, $window) {
return $resource('/login', {}, {
login: {
method: 'POST'
},
getEmail: {
url: '/user',
method: 'GET',
headers: {
'Authorization': "Bearer " + $window.localStorage.getItem('TK')
}
}
});
})
回应@comment:
我的控制器如下所示:
angular
.module('app.mymodule', ['ngReource', 'authentication')
.controller('myCtrl', mymodule);
mymodule.$inject = ['User', '$window'];
function mymodule(User, $window) {
// THIS PRINTS THE TK IN CONSOLE CORRECTLY
console.log($window.localStorage.getItem("CHTOKEN"));
// THIS IS UNAUTHORIZED CUZ TK IS NULL
User.getEmail({}, function(data){
console.log('set the email');
});
}