gpt4 book ai didi

node.js - res.cookie(名称,值);不设置 cookie (Express/NodeJs)

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:06 24 4
gpt4 key购买 nike

我正在使用 NodeJs、Express Framework 和 Firebase 开发 Web 应用程序。在客户端上使用 firebase 函数进行身份验证后,idToken 会发送到服务器,在服务器上创建 session cookie,然后将其存储在 cookie 中。但是,res.cookie 无法在客户端存储 cookie。

客户端 auth.js 片段(所有 2 个都属于同一个 js 客户端文件)

//Log-in event start
$( "#log-form" ).submit(function( event ) {
event.preventDefault();
var email = document.getElementById('emailInput').value;
var password = document.getElementById('passwordInput').value;
firebase.auth().signInWithEmailAndPassword(email,password)
.catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
window.alert(errorMessage);
})
.then(function(value) {
firebase.auth().currentUser.getIdToken(true)
.then(function(idToken) {
sendToken(idToken);
})
.catch(function(error) {
console.log(error.message);
});
});
});//end of log-in event


function sendToken(token)
{
$.ajax({
type: 'POST',
url: '/users/authIn',
data: {
'token' : token
},
success: function(data){
console.log(data);
},
error: function(errMsg)
{
console.log(errMsg);

}
});

}

服务器端routes/users.js代码片段

router.post('/authIn', function (req, res, next) {
var token = req.body.token.toString();
var expiresIn=1000*60*60*24;
admin.auth().verifyIdToken(token)
.then(function(decodedToken){
firebase.auth().createSessionCookie(token,{expiresIn})
.then(function(sessionCookie)
{
res.cookie('session', sessionCookie);
res.send("done");
})
.catch(function(error)
{
res.send(error);

});
res.redirect('/interfacePage');
})//end of .then
.catch(function(error){
res.send(error);
})
});

我已经尝试了几天,但没有成功。任何帮助将不胜感激。如果您的答案不仅仅是修复而是解决方法,请包含代码,因为我对 ajax/express 相当陌生,可能不熟悉某些术语/技术。

编辑:找到灵魂

最佳答案

而不是:

 res.cookie('session', sessionCookie);
res.send("done");

我需要使用:

res.setHeader('Cache-Control', 'private');
res.cookie('__session', sessionCookie);
res.send("done");

Firebase 允许名为“__session”的单个 Cookie

关于node.js - res.cookie(名称,值);不设置 cookie (Express/NodeJs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54776136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com