Ich habe eine eckige Fabrik namens currentUser, um die Benutzerinformationen zu halten, wenn sie sich in meiner App anmelden (einschließlich der Authentifizierungs-Token). Diese Fabrik wird in viele Controller eingespeist und in diesen Fällen habe ich keine Probleme, wenn ich currentUser.getProfile(). Token benutze.
Ich habe auch verschiedene andere Fabriken, die jeweils ein $ Ressourcenobjekt für die API-Aufrufe zurückgeben. In diesen Fabriken injiziere ich currentUser, so dass ich das Authentifizierungs-Token dazu bringen kann, den Anforderungsheadern hinzuzufügen. Hier ist ein vereinfachtes Beispiel einer dieser Fabriken.
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
}
}
})
}
}
jedoch currentUser.getProfile() Token ist immer leer und ich erhalte eine unathorised Fehler, obwohl, wenn ich den Wert log in einem meiner Controller ist nicht leer. Was könnte das verursachen?
Edit:. Das Problem nicht nur mit dem Werk scheint current zu sein, wie wenn ich currentUser.getProfile() ersetzen Token mit localStorage.getItem (‚Token‘) Ich scheine das gleiche Problem zu haben. Ein Controller protokolliert das lokal gespeicherte Token korrekt, es wird jedoch nicht den Kopfzeilen von API-Anforderungen hinzugefügt.
Danke für die Antwort, das scheint jetzt zu funktionieren! – shadowsora
Sie können auch prüfen, wie httpInterceptors arbeiten – charlietfl