gpt4 book ai didi

node.js - 无法在node.js中使用 session

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

我正在开发登录页面。
如果用户成功登录,那么我想将 user_Id 存储到 session 变量中,我将用它来验证其他页面。

App.js

var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var passport = require('passport');
var cookieParser = require('cookie-parser');
var session = require('express-session');
app.use(bodyParser.json());
app.use('/user', userRoutes);
app.use('/', index);
app.use(cookieParser());
app.use(session({
secret: "helloKey",
resave: false,
saveUninitialized: true,
store: new MongoStore({ mongooseConnection: mongoose.connection}),
cookie: { maxAge: 180 * 60 * 1000 }
}));


用户路由器

var express = require('express');
var router = express.Router();
User = require('../models/user');

//Login User
router.post('/login', function (req, res) {
var user = new User(req.body);
User.login(user, function (err, user) {
if (err) {
res.sendStatus(500);
throw err;
}
if (!user) {
res.sendStatus(404);
return;
}
req.session.name = user.id;
res.json(user.id);

});
});


问题是,如果我执行此代码,我会得到无法设置未定义的属性“名称”
我做错了什么?
请帮忙。

最佳答案

问题是您的路线在 session 之前就已设置,因此您必须重新排序代码。移动这些行

app.use('/user', userRoutes);
app.use('/', index);

位于 app.use(session) 声明下方。

app.use(session({
secret: "helloKey",
resave: false,
saveUninitialized: true,
store: new MongoStore({ mongooseConnection: mongoose.connection}),
cookie: { maxAge: 180 * 60 * 1000 }
}))

关于node.js - 无法在node.js中使用 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45263434/

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