每当我呈现主页或帐户页面时,我的会话有时会丢失。我有一个名为isSignedIn()
的函数来检查uid是否存在。有时,当我刷新主页时,它返回false。当我点击我的帐户端点时,即使在上一页上它是真的,它也会返回false。有关为什么会发生这种情况的任何想法?
我的应用如何运作: 当用户登录时,我从客户端获取uid并命中auth端点。
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代码来存储会话:
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。任何指导都表示赞赏。
答案 0 :(得分:0)
自发布此问题以来,我已将主机从GAE切换到Heroku并修复了它。我知道node.js的功能处于测试阶段,所以也许就是它