AngularFire:恢复匿名会话

时间:2014-04-01 00:49:50

标签: javascript angularjs firebase angularfire firebase-security

Simple Web Login文档中,它声称您可以通过执行以下操作恢复会话:

var auth = new FirebaseSimpleLogin(chatRef, function(error, user) {
  ...
});

AngularFire有等价物吗?

$firebaseSimpleLogin构造函数将firebase引用作为其唯一参数..

具体来说,我要做的是匿名登录并在整页刷新时恢复登录。这是可以实现的吗?

1 个答案:

答案 0 :(得分:4)

您的身份验证会话是否保留取决于您传递给login方法的参数。无论您使用FirebaseSimpleLogin还是$ firebaseSimpleLogin都与此无关。

var auth = $firebaseSimpleLogin(ref);
$rootScope.$on('$firebaseSimpleLogin:login', function(user) {
   console.log('logged in', user.uid);
});

// automagically logs in the next time you call $firebaseSimpleLogin() after page refresh
auth.$login('anonymous', { rememberMe: true });

// does not automagically log in
auth.$login('anonymous');

更新从Angular 1.x和Firebase 2.x开始,此语法和行为已发生变化。

来自Firebase文档中的remember属性:

  

如果未指定 - 或设置为default - 会话将保持为   只要您在登录和配置中配置您应用的Auth选项卡   仪表板。要将持久性限制为当前窗口的生命周期,   将其设置为sessionOnly。值none将不会持续存在   完全认证数据,并将尽快结束认证   页面已关闭。

var auth = $firebaseAuth(ref);
$firebaseAuth.$onAuth(function(user) {
   console.log('logged ' + (user? 'in' : 'out'), user && user.uid);
});

// stays logged in for length specified in the app dashboard
auth.$authAnonymously();

// stays logged in until the browser closes
auth.$authAnonymously({ remember: 'sessionOnly' });

// does not stay logged in on page refresh
auth.$authAnonymously({ remember: 'none' });