У меня есть угловая фабрика под названием currentUser для хранения информации о пользователе при входе в мое приложение (включая токен аутентификации). Этот завод вводится в множество контроллеров, и в этих случаях у меня нет проблем при использовании 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() маркер всегда пуст, и я получаю unathorised ошибки, даже если при входе значения в одном моих контроллерах оно не пусто. Что может быть причиной этого?
Edit:. Проблема, кажется, не просто быть с CurrentUser завода, а когда я заменяю currentUser.getProfile() маркер с localStorage.getItem («маркеров») Я, кажется, есть та же самая проблема. Контроллер будет правильно регистрировать локально сохраненный токен, но он не будет добавлен в заголовки запросов API.
Спасибо за ответ, похоже, сейчас! – shadowsora
Вы также можете посмотреть, как работают httpInterceptors – charlietfl