使用Firebase用户身份验证写入数据库时,我会遇到一些问题。
在给定页面中,说出myPage.html;我需要访问实时数据库以执行一些数据写入。我有代码可以检查我是否正确登录:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
... some useful code ...
// OK to perform DB writes.
} else {
// User is signed out.
... Get-Out-Of-Here ...
// NG to perform DB writes.
}
});
到目前为止,一切正常,如果我已登录,则可以按预期方式写入数据库。
然后,我需要从另一页(myOtherPage.html)进行更多写作。
myPage.html中有一个指向myOtherPage.html的链接。
<a href='myOtherPage.html'>Go To The Other Page</a>
问题来了:
在myOtherPage.html中,我无法再执行任何数据写入数据库的操作。
我的身份验证似乎已经消失了。
即使更改页面,我该怎么做才能保持对数据库的访问?
答案 0 :(得分:2)
如果您不使用Authentication State Persistence
可以阅读here
官方文档中的一些代码段:
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(function() {
// Existing and future Auth states are now persisted in the current
// session only. Closing the window would clear any existing state even
// if a user forgets to sign out.
// ...
// New sign-in will be persisted with session persistence.
return firebase.auth().signInWithEmailAndPassword(email, password);
})
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
});
这是可用的状态类型:
使用“本地”状态应该可以满足您的需要,并且用户需要注销自己,这意味着他将保持登录状态,除非他注销即可访问您的数据库。
PS: Web浏览器和React Native应用程序的默认设置是本地的(前提是浏览器支持此存储机制,例如,启用了第三方Cookie /数据),而Node.js后端应用程序则没有。 / em>