【发布时间】:2015-10-25 16:56:03
【问题描述】:
我在express.js 和mongodb 的帮助下开发一个网站。
为了持续使用这个网站,我使用的是 express-session v1.11.3。而且,为了检查用户是否登录,我创建了一个中间件功能。在这个函数中,我试图获得一个会话,但它总是返回Undefined。
登录到路由器时,我有一个带有用户 obj 的初始化会话变量。如下:
//users router
router.all('/login', function(req, res) {
var db = req.db;
.....
........
//on successfully login
req.session.user = user;
res.redirect('/dashboard');
});
我在users.js路由器文件中创建了这个中间件函数来进行身份验证。下面是这个函数的代码:
function requiredAuthentication(req, res, next) {
if (req.session.user) {
next();
} else {
res.redirect("/users/login");
}
}
现在,我正在尝试获取用户列表,只有经过身份验证的用户才能获得:
router.get('/index',requiredAuthentication, function(req, res, next) {
var db = req.db;
db.collection('users').find().toArray(function(err, users) {
if (err) {
res.render('error', {error: err});
}else {
res.render('users/index', {users: users});
}
});
});
但它不能正常工作。
【问题讨论】:
-
您所说的“无法正常工作”是什么意思?你能描述一下由此产生的行为吗?最简单的调试方法是使用
console.log();) -
中间件函数 requiredAuthentication , req.session.user 值未定义请立即建议
-
您确定您已正确包含
express-session中间件吗? -
是的,我已经包含在 app.js 中,例如 var session = require('express-session'); app.use(session({secret: 'keyboard cat'})) 请立即提出建议
标签: javascript node.js mongodb session express