사용자 정보가 내 애플리케이션에 로그인 할 때 (인증 토큰 포함) 사용자 정보를 보유하기 위해 currentUser라는 각도 공장이 있습니다. 이 팩토리는 많은 컨트롤러에 주입되며 이러한 경우에는 currentUser.getProfile()을 사용할 때 아무런 문제가 없습니다.
나는 또한 API 호출을하기 위해 각각 $ resource 객체를 반환하는 다른 여러 팩토리를 가지고있다. 이 공장에서는 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 오류가 있습니다 : 다음은이 공장 중 하나의 단순화 된 예입니다 비어 있지 않습니다. 무엇이 이것을 일으킬 수 있습니까?
편집 :. 문제는 그냥 currentUser.getProfile를 교체 할 때() localStorage.getItem ('토큰')와 토큰을 같이 currentUser 공장과 함께하지 않을 것으로 보인다 나는 같은 문제를 갖고있는 것 같다. 컨트롤러는 로컬에 저장된 토큰을 올바르게 로깅하지만 API 요청의 헤더에는 추가되지 않습니다.
답장을 보내 주셔서 감사합니다. – shadowsora
httpInterceptors가 작동하는 방법을 살펴볼 수도 있습니다. – charlietfl