req.session设置值后,在另外一个文件获取不到req.session中的值
发布于 8 年前 作者 leoskey 5833 次浏览 来自 问答
(app.js)session参数:
 app.use(session({
	key:'keyboard',
	cookie:{maxAge:3000},
	secret: 'keyboard cat',
	resave: false,
	saveUninitialized: true,
	cookie: { secure: true ,cookie: { maxAge: 60000 }},
	store: new MongoStore({
	  url:config.mongodb_url,
	  autoRemove: 'interval',
	  autoRemoveInterval: 1,
	  ttl: 60
	})
}));
(./routers/user)用户登录:
router.post('/login',function(req,res,next){
	var userAccount = req.body.user_account;
	var login_password = req.body.login_password;
	var userInfo = req.session.userInfo;
	if (userAccount=="admin"&&login_password=="admin") {
		userInfo['admin']={'userName':'admin'};	
		res.redirect("/manage/blacklists");
	}else{
		req.flash('info','登录失败');
		res.redirect('/user/login');
	};
});
(./routers/manage)个人中心:
router.get('/blacklists',function(req,res,next){
	console.log(req.session);
	if (!req.session) {
		BlackList.find({},function(err,docs){
			if (err) {return;};
			res.render('manage',{'blackLists':docs});
		});
	}else{
		res.redirect('/user/login');
	};
});

在登录成功后设置req.session.userInfo的值,然后重定向到个人中心,获取不到req.session里面的值,像一个新的会话一样。 请问是什么问题,谢谢你的回答!

5 回复

用户登录里 var userInfo = req.session.userInfo; 这行代码拿到的userInfo应该是undefined吧,userInfo[‘admin’]={‘userName’:‘admin’}; 难道这行代码不报错吗?很好奇。

这段是按照session编写的,在设置userInfo[‘admin’]={‘userName’:‘admin’};后,使用console.log(req.session)是有userName的数据的。这里帐号和密码都是写死了的。

@imhered QQ截图20151222175821.png 第一个session是登录保存的,第二个是个人中心获取得到的

@imhered 按照你的代码,我进行了更改。MongoDB里面也有保存的session数据,但是在个人中心页面还是获取不到!上面的图片是修改代码后的结果!

回到顶部