无法在node.js中使用会话
我正在开发登录页面。无法在node.js中使用会话,node.js,express-session,Node.js,Express Session,我正在开发登录页面。 若用户成功登录,那个么我想将用户_Id存储到会话变量中,我将使用该变量对其他页面进行身份验证 App.js var express = require('express'); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var passport = require('passport'); var cookieParser = require('cookie-par
若用户成功登录,那个么我想将用户_Id存储到会话变量中,我将使用该变量对其他页面进行身份验证
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);
});
});
问题是,如果执行此代码,我将无法设置未定义的属性“name”
我做错了什么?
请提供帮助。问题是您的路由在会话之前已经设置好,因此您必须重新排序代码。 移动这些线
app.use('/user', userRoutes);
app.use('/', index);
应用程序下方。使用(会话)声明
app.use(session({
secret: "helloKey",
resave: false,
saveUninitialized: true,
store: new MongoStore({ mongooseConnection: mongoose.connection}),
cookie: { maxAge: 180 * 60 * 1000 }
}))
谢谢,效果如预期。我还有一个问题,我如何知道我是在使用express sessions还是connect mongo module进行会话?通过查看您的代码,可以看出您正在使用express session。在app.use中,您使用了express会话的实例。如果您使用其他模块,那么您将使用其他模块的MiddleWare。我还导入了
var mongostre=require('connect-mongo')(会话)代码>,我也在使用app.use(session({secret:MySuperSecretKey),resave:false,saveUninitialized:true,store:new mongoostore({mongooseConnection:mongoose.connection}),cookie:{maxAge:180*60*1000})代码>Mongo store仅用于存储。Express session将管理您的所有会话。好的,这是正确的方法吗?我的意思是,即使我使用此配置部署我的应用程序,它是否可以在没有任何性能问题的情况下工作?因为我读过,express session不应该用于生产web应用程序。