在我的网络应用程序中,有一个页面“interfacePage”,我想限制对它的访问(服务器端)。因此,每次调用页面时,我都会使用一个函数从客户端 cookie 获取 firebase session cookie,然后检查其有效性。如果有效,则渲染interfacePage,否则渲染登录页面。
代码片段
function isAuthenticated(req, res, next){
try {
var sessionCookie = req.cookies.session;
console.log(sessionCookie);
admin.auth().verifySessionCookie(sessionCookie, true)
.then(function(decodedClaims){
console.log("token verified");
next()
})
.catch(function(error){
console.log(error);
res.redirect('/users/login');
});
}catch (err)
{
console.log(err);
}
};
router.get('/interfacePage', isAuthenticated,function (req, res, next) {
//isAuthenticated is called when this get is called. If next() is called from isAuthenticated, then function (req, res, next) is called which renders page
res.render('interfacePage');
});
这段代码在本地运行得非常好。但是,一旦我部署它并通过 firebase 控制台启动应用程序,每当我请求 interfacePage 时,它都会不断地给我网关超时错误。我想大概是这样的
admin.auth().verifySessionCookie(sessionCookie, true)
由于某种原因,响应时间过长。
如有任何帮助,我们将不胜感激。
好吧,显然 firebase 会删除除名称为“__session”的 cookie 之外的所有 cookie。我将 cookie 的名称从 session 更改为 __session,现在它可以工作了。
我是一名优秀的程序员,十分优秀!