我正在开发一个angular应用程序,并使用Firebase在其中实现注册和日志功能。两个功能都运行良好。
现在我遇到的麻烦是在onAuthStateChanged()函数。我想要的是一旦用户登录,他/她必须能够看到一个消息,说他们已经登录。我甚至可以看到"Hi {{currentUser。firstname}}",我已经在代码中提到,一旦我登录,但只要我刷新页面,并尝试再次登录,我看到"嗨{{currentUser。firstname}}",即使我没有点击登录按钮。我不知道我的登录页面是如何渲染$rootScope的。currentUser值,即使我没有登录。我为它写了下面的代码
JS
auth.onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var data = firebase.database().ref('users/' + user.uid);
data.on('value', function(snapshot) {
var userobj=snapshot.val();
$rootScope.currentUser=userobj;
})} else {
// No user is signed in.
$rootScope.currentUser=' ';
}
});
html <div class="userinfo" ng-show="currentUser">
<span class="userinfo">Hi {{currentUser.firstname}}</span>
</div>
行为是由设计的。来自文档:
Firebase认证实例持久化用户的状态,以便刷新页面(在浏览器中)或重新启动应用程序不会丢失用户的信息。
如果您不希望用户的认证状态被持久化,您将需要注销用户。