签出然后重新加载页面自动登录

时间:2018-05-26 20:33:52

标签: javascript firebase firebase-authentication

在我的多页HTML网站(由Firebase托管)上,我有一个登录/注销按钮。每当我按下退出时,退出按钮就会成为登录按钮,这要归功于我的CSS,并且控制台报告"用户未登录"。

然而,当我重新加载页面或导航到另一个页面时(Ctrl + R和Ctrl + Shift + R没有区别),重新出现退出按钮,并且控制台报告"用户登录&#34 ;好像服务器不记得用户应该注销,并且在页面重新加载后不会自动登录。

这是我用于登录的内容。请注意,setButtons()是我更改CSS以显示我需要的按钮的代码。按下登录按钮时会调用gLogin(),并在按下注销按钮时调用gLogout

var signedIn;
var curUser = null;

function updateUser(user)
{
    if (user) {
        curUser = user;
        signedIn = true;
        console.log("User is logged in");
        // User is signed in.
    } else {
        curUser = null;
        signedIn = false;
        console.log("User is not logged in");
        // No user is signed in.
    }
    setButtons(signedIn);
}

firebase.auth().onAuthStateChanged(updateUser);

function gLogin() {
    firebase.auth().signInWithPopup(gProvider).then(function (result) {       
    var token = result.credential.accessToken; 
    var user = result.user;
    signedIn = true;
    location.reload(true);
  }).catch(function (error) {
      console.log(error);
  });
}

function gLogout() {
    firebase.auth().signOut().then(function () {
        signedIn = false;
        updateUser(null);
    }).catch(function (error) {
        console.log(error);
    });
}

1 个答案:

答案 0 :(得分:0)

我明白了:显然,问题是我没有设置默认的身份验证持久性状态。据我所知,这意味着持久性会产生无证的行为。这是我在每个页面中添加的内容'脚本:

firebase.auth()
.setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(function() {
    console.log("Persistence set");
}).catch(function(error) {
    console.log(error);
});
相关问题