2013-06-04 3 views
4

인증 및 권한 부여를 위해 Express 및 Passport를 사용하는 노드 응용 프로그램에서 작업 중이며 모든 작업이 올바르게 작동합니다. 그러나 필자는 Angular 컨트롤러에서 현재 사용자 (Passport로 req.user로 설정)를 얻는 방법에 대해 어려움을 겪고 있습니다.AngularJS - 액세스 노드/표현 세션 정보

머리글/탐색 모음 (다른 것들 중에서)에 사용자 이름을 표시하는 것과 같은 일반적인 작업을 수행 할 수 있기를 원하며 현재 옥 (Jade)보기 엔진을 사용하여이 작업을 수행하고 있습니다. 일부 "데이터 바인딩"을위한 옥 (jade) 뷰 엔진과 다른 사람들을위한 각도 (Angular).

req.user를 JSON으로 반환하는 노드에서 api 끝점을 쉽게 호출 할 수 있다는 것을 알았지 만, 페이지가있을 때마다 끝점에 도달하므로 추악한 솔루션처럼 보입니다. 로드 (이것은 SPA가 아닙니다).

그래서 내 질문은 기본적 으로이 있습니다 : 모든 데이터 바인딩 클라이언트 측면에서 일부 서버 쪽 (옥보기 엔진) 및 일부 클라이언트 쪽 대신 할 수 있도록 현재 각도보기에서 현재 로그인 한 사용자가 얻을 수 있습니까 각도로?

참고 : 실제로 모든 것이 의도 한대로 작동하기 때문에 코드 스 니펫이 없습니다. 현재 가지고있는 것보다 더 나은 대안을 기대합니다.

답변

1

ng-app를 정의하는 DOM에서 "ng-init"을 사용하는 것을 고려하십시오. 즉, Express에 인쇄 된 서버 측 데이터입니다 (먼지 템플릿 가정).

<body ng-app="testApp" ng-controller="homeCtrl" ng-init="logged_in_user = {req.user}"> 
     <div... 
     ... 
    </body> 

그때 당신은 내가 그 꽤 생각 ..이 도움이 희망 "scope.logged_in_user"로, 당신의 homeCtrl에

-Bhaskara

+0

을 LOGGED_IN_USER에 액세스 할 수 있습니다 : 다음은이 간단한 예입니다 내가 찾고있는 것 많이. 나는 여러 가지를 시도 할 때이 앱의 이전 반복에서 뿌리 범위를 남겨 둡니다. 그리고 나는 이것이 이런 식의 완벽한 장소라고 생각합니다. 뜻하지 않은 문제에 빠지지 않는 한 대답으로 표시합니다. :) 대단히 감사합니다! –

+0

이전 의견을 편집 할 수 있기를 희망했습니다. 나는 조금 놀아서이 작업을 해 보았습니다. 조금 더 확장 할 수는 있었지만 기초가 작동했습니다. 다시 한번 감사드립니다! :) –

+1

@JamesMcConnell 당신이'$ rootScope'를 사용할 수는 있지만 더 좋은 곳은 필요한 곳에서는 컨트롤러에 주입 할 수있는 개인용 API에 액세스 할 수있는 서비스입니다. – dmackerman