Page 236 - AngularJS权威教程
P. 236
216 第 18 章 服务器通信
$bind()方法返回了一个promise,它会在AngularFire从收到服务器的初始数据之后执行。这
个promise会被用一个unbind方法执行,unbind在被调用时,可以解除三向绑定。这个关联的解
除对于优化网站和移除不必要的监控是很有帮助的。
18.30 用 AngularFire 进行认证
Firebase提供了一个简单的开箱即用的客户端认证策略。
使用Firebase的Simple Login或者Custom Login方法,我们可以轻松地用AngularFire给应用添
加用户认证。
如果我们有自己的服务器,想要控制自己的认证过程,或者我们想把自己的认证过程跟
Firebase集成,Custom Login是最适合用的。
如果我们想用Firebase来管理我们所有的认证,可以使用Simple Login,它支持Facebook、
Twitter、Github、Persona和Email/Password认证。
通过在应用模块中定义Firebase为依赖项的方式,我们在控制器和服务中获得了对
$firebaseAuth服务的访问权。
angular.module('myApp')
.controller("MyAuthController", function($scope, $firebaseAuth) {
// 在这里定义我们的控制器
});
$firebaseAuth服务方法带有两个参数:一个Firebase引用和一个可选的选项对象。为了能自
定义使用Firebase进行认证的方式,这个对象可以包含如下属性。
path:如果authRequired属性在$routeProvider中被设置成true,用户又没有登录的话,
用户会被重定向到path属性指向的地址。
simple: $firebaseAuth默认需要包含firebase-simple-login.js文件,如果simple的值被设
置为false,就没这个要求了,但只有自定义登录功能会被启用,我们不能使用简单认
证了。
callback:当认证状态发生变化的时候,Firebase会调用这个函数。我们可以把这个回调
作为在$rootScope上触发的事件的替代,这是处理认证状态变更的推荐方式。
angular.module('myApp')
.controller("MyAuthController", function($scope, $firebaseAuth) {
var ref = new Firebase(URL);
$scope.auth = $firebaseAuth(ref);
// $scope.auth.user在用户登录之前都是null
});
$firebaseAuth()方法返回的对象包含一个叫做user的属性。如果用户注销了,user就被
设置为null,一旦他登录了,user变成包含用户详情的一个对象。我们会在下面探讨登录的
检测。
用户详情对象的内容会随着所使用认证方式的不同而有所区别,但至少,它会有一
个user id和provieder name。