gpt4 book ai didi

node.js - session 在 Express js 中不起作用

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

我正在使用快速 session 创建登录应用程序。当我通过发布请求登录应用程序时,将创建 cookie,但 session 对我不起作用。

服务器.js

var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var session = require('express-session');
app.use(cookieParser());

app.use(session({
key: 'user_sid',
secret: 'somerandonstuffs',
resave: false,
saveUninitialized: false,
cookie: {
expires: 600000
}
}));
var sessionChecker = (req, res, next) => {
if (req.session.user && req.cookies.user_sid) {
res.redirect('/');;
} else {
next();
}
};
app.post('/login', function (req, res) {
console.log(req.session.user)
if (req.session.user && req.cookies.user_sid) {
result = { "message": "loggedinwithsession" };
res.send(result);
} else {
var data = req.body;
var responseData = {};
console.log(data);
res.setHeader('Content-Type', 'application/json');
controller.cont.login(data.email, data.password).then(result => {
res.send(result),
req.session.user = result;
}
).catch(result => res.send(result))
}
})

最佳答案

您将在设置 session 之前发送结果数据。

controller.cont.login(data.email, data.password).then(result => {
res.send(result), //wrong
req.session.user = result;
}).catch(result => res.send(result))

你应该这样做。

controller.cont.login(data.email, data.password).then(result => {
console.log("setting session"); //for debugging
req.session.user = result; // first set session
res.send(result); // then send result
}).catch(result => res.send(result))

这是一个最小版本。

app.all('/', function(req, res){
console.log(req.session)
res.send("welcome")
})
app.get('/set', function(req, res){
console.log(req.session)
res.setHeader('Content-Type', 'text/html');
req.session.data = "test session value"
res.send("test")
})

关于node.js - session 在 Express js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49532034/

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