【问题标题】:AngularFire: Resuming an anonymous sessionAngularFire:恢复匿名会话
【发布时间】:2014-04-01 00:49:49
【问题描述】:
在Simple Web Login 文档中,它声称您可以通过执行以下操作来恢复会话:
var auth = new FirebaseSimpleLogin(chatRef, function(error, user) {
...
});
是否有 AngularFire 的等价物?
$firebaseSimpleLogin 构造函数将 firebase 引用作为其唯一参数..
具体来说,我要做的是匿名登录一次,然后在整个页面刷新时恢复登录。这可以实现吗?
【问题讨论】:
标签:
javascript
angularjs
firebase
angularfire
firebase-security
【解决方案1】:
您的身份验证会话是否保留取决于您传递给登录方法的参数。无论您使用 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 - 会话将持续为
只要您在 App 的 Login & 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' });