每当我渲染主页或帐户页面时,我的 session 有时会丢失。我有一个名为 isSignedIn()
的函数,用于检查 uid 是否存在。有时,当我刷新主页时,它会返回 false。当我点击我的帐户端点时,它也会返回 false,即使在上一页上它是 true 。关于为什么会发生这种情况有什么想法吗?
我的应用程序如何工作: 当用户登录时,我从客户端获取 uid 并点击身份验证端点。
function createServerSession(user) {
// Get secret token from Firebase for current session
firebase.auth().currentUser.getToken(true)
.then(function(idToken) {
// Get session on my Node server for server user identification
if (idToken) {
fetch('/firebaseauth?idtoken=' + encodeURIComponent(idToken) + '&username=' + encodeURIComponent(user.email.split('@')[0]), {
credentials:'include'
}).then(function(data){
if (window.location.pathname === '/' && document.getElementById('login').innerHTML.trim() === 'Join') {
redirect('/');
}
if (window.location.href.includes('login')) {
redirect('/');
}
})
}
})
}
然后它会调用我的 node.js 代码来存储 session :
app.get('/firebaseauth', function (req, res) {
if (! req.session.idToken) {
firebase.auth().verifyIdToken(req.query.idtoken).then(function(decodedToken) {
req.session.username = req.query.username
req.session.idToken = decodedToken.uid;
req.session.save(function(){
res.json(true)
})
})
这种方法在大多数情况下都可以正常工作,但在某些情况下它会发送多个请求。最高金额一度达到7400。任何指导表示赞赏。
最佳答案
自从发布此问题后,我已将主机从 GAE 切换到 Heroku,并修复了该问题。我知道 Node.js 的功能处于测试阶段,所以也许就是这样
关于javascript - Firebase 身份验证 - onAuthStateChanged 多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39384882/