0

사용자 정보가 내 애플리케이션에 로그인 할 때 (인증 토큰 포함) 사용자 정보를 보유하기 위해 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 요청의 헤더에는 추가되지 않습니다.

답변

3

을 반환하는 함수로 logout이 필요합니다.

당신이 지금 currentUser.getProfile()에 대한 호출은 즉시 서비스가 어떤 초기화로 이루어지고있는 방법이되지 않습니다 토큰을 얻을 수

function userAccount($resource, appSettings, currentUser) { 
    return { 
    logout: function() { 
     return $resource(appSettings.serverPath + "/api/Account/Logout", null, { 
     'logoutUser': { 
      method: 'POST', 
      headers: { 
      'Authorization': 'Bearer ' + currentUser.getProfile().token 
      } 
     } 
     }) 
    } 
    } 
} 

지금 전화의 사용자도 로그온하기 전에 아마 전화 할 때까지 userAccount.logout()

+0

답장을 보내 주셔서 감사합니다. – shadowsora

+0

httpInterceptors가 작동하는 방법을 살펴볼 수도 있습니다. – charlietfl

0

정확히 수정 사항은 아니지만 몇 가지 해결 방법이있는 것으로 보입니다. 여기에 대한

$http.defaults.headers.common['Authorization'] = 'Bearer ' + data.access_token; 

블로그 게시물 : 내가 사용하기로 결정했습니다 하나는 공통의이 같은 HTTP 헤더로 인증 토큰을 추가했다 사람이 알고 있던 경우에 http://blog.brunoscopelliti.com/authentication-to-a-restful-web-service-in-an-angularjs-web-app/

난 여전히 관심을 가질만한 내가 그래도 전에 잘못한거야?

관련 문제