gpt4 book ai didi

AngularJS 与 Firebase 身份验证共享服务

转载 作者:行者123 更新时间:2023-12-02 22:45:16 25 4
gpt4 key购买 nike

大家好,

我想使用 angularjs 和 firebase 简单登录(facebook)。但我不知道如何创建身份验证共享服务。

我想做的是

  • 创建身份验证服务
  • 使用此身份验证服务来检查用户是否在每个 Controller 中登录
  • 如果用户登录/未登录, Controller 将执行$location

我也是 angularjs 新手,但我不知道在这种情况下应该使用哪些服务。服务还是工厂

如何将以下代码放入 angular.service 中,然后告诉每个 Controller 用户是否登录?

var firebaseRef = new Firebase("https://test.firebaseio.com");
var auth = new FirebaseAuthClient(firebaseRef, function(error, user) {
if (user) {
console.log(user);
} else if (error) {
console.log(error);
} else {
console.log('user not login');
}
});

这是我的猜测,从 authService 返回 user 值,因此在 Controller 中,如果 authService.user 存在,则重定向到登录页面否则显示登录对话框登录按钮调用以下代码

authService.login('facebook');

请告诉我是否可以这样做,或者有更好的方法吗?

最佳答案

这是我到目前为止使用的...

我还没有实现重定向,但其余的都可以。

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;
});
});
};

关于AngularJS 与 Firebase 身份验证共享服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com