在我的多页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);
});
}
答案 0 :(得分:0)
我明白了:显然,问题是我没有设置默认的身份验证持久性状态。据我所知,这意味着持久性会产生无证的行为。这是我在每个页面中添加的内容'脚本:
firebase.auth()
.setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(function() {
console.log("Persistence set");
}).catch(function(error) {
console.log(error);
});