다음은 내가 인증을 Singly로 이전하기 전에 사용했던 것입니다. 어쩌면 도움이 될까요?
p4pApp.factory('firebaseAuth', function($rootScope) {
var auth = {},
FBref = new Firebase(p4pApp.FIREBASEPATH);
auth.broadcastAuthEvent = function() {
$rootScope.$broadcast('authEvent');
};
auth.client = new FirebaseAuthClient(FBref, function(error, user) {
if (error) {
} else if (user) {
auth.user = user;
auth.broadcastAuthEvent();
} else {
auth.user = null;
auth.broadcastAuthEvent();
}
});
auth.login = function() {
this.client.login('facebook');
};
auth.logout = function() {
this.client.logout();
};
return auth;
});
AuthCtrl은 내/모든 페이지에서 공통적으로 사용됩니다.
var AuthCtrl = function($scope, firebaseAuth) {
$scope.login = function() {
firebaseAuth.login();
};
$scope.logout = function() {
firebaseAuth.logout();
};
$scope.isLoggedIn = function() {
return !!$scope.user;
};
// src: Alex Vanston (https://coderwall.com/p/ngisma)
$scope.safeApply = function(fn) {
var phase = this.$root.$$phase;
if (phase == '$apply' || phase == '$digest') {
if(fn && (typeof(fn) === 'function')) {
fn();
}
} else {
this.$apply(fn);
}
};
$scope.$on('authEvent', function() {
$scope.safeApply(function() {
$scope.user = firebaseAuth.user;
});
});
};
AuthCtrl에서 isLoggedIn()을 호출하여 사용자가 로그인했는지 여부를 확인할 수 있습니다.
안녕하세요, 마침내 내 문제는 무엇인지 알아 냈습니다. 여기서 간단하게 만듭니다. 단일 페이지 앱은 전체 페이지로드가 아니기 때문에 모든 경로에서 "사용자가 로그인 했음"을 어떻게 처리 할 수 있습니까? 경로가 변경 될 때마다 FirebaseAuthClient()를 호출 하시겠습니까? 이것이 angularjs 또는 firebase와 관련이 있는지 잘 모르겠습니다. – vzhen
FirebaseAuthClient가 반환 한 마지막 결과 만 기억하면됩니다. 다시 전화 할 필요는 없습니다. –
나중에 사용할 수 있도록 인증 정보를 어디에 저장해야합니까? angularjs의 쿠키 또는 $ rootScope? 사용자 인증 후 auth.id (사용자 ID)를 직접 호출 할 수 있습니까? – vzhen