【发布时间】:2016-07-20 10:56:12
【问题描述】:
我有一个名为 currentUser 的 Angular 工厂,用于在用户登录我的应用程序时保存用户信息(包括身份验证令牌)。这个工厂被注入到许多控制器中,在这些情况下,我在使用 currentUser.getProfile().token 时没有问题。
我还有各种其他工厂,它们每个都返回一个 $resource 对象来进行 API 调用。在这些工厂中,我注入 currentUser 以便我可以获取身份验证令牌以添加到请求标头中。以下是这些工厂之一的简化示例:
angular
.module("common.services")
.factory("userAccount",
["$resource",
"appSettings",
"currentUser",
userAccount])
function userAccount($resource, appSettings, currentUser) {
return {
logout: $resource(appSettings.serverPath + "/api/Account/Logout", null,
{
'logoutUser': {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + currentUser.getProfile().token
}
}
})
}
}
但是,currentUser.getProfile().token 始终为空,并且我得到一个未经授权的错误,即使当我将值记录到我的控制器中时它也不是空的。这可能是什么原因造成的?
编辑: 问题似乎不仅仅在于 currentUser 工厂,因为当我用 localStorage.getItem('Token') 替换 currentUser.getProfile().token 时,我似乎也有同样的问题问题。控制器将正确记录本地存储的令牌,但不会将其添加到 API 请求的标头中。
【问题讨论】:
标签: angularjs authentication dependency-injection resources factory