我有这个问题:
request.session.regenerate(function() {
request.session.user = username;
return response.send(username);
});
登录时,我总是得到未定义的错误:
Cannot read property 'regenerate' of undefined
如果我离开return response.send(username);
它工作正常,但我需要创建一个会话。
可能是什么问题?
更多代码
router.post('/login', bodyParser, function(request, response) {
var username = request.body.username;
var password = request.body.password;
adminUser.findOne({
username: username
}, function(err, data) {
if (err | data === null) {
return response.send(401, "User Doesn't exist");
} else {
var usr = data;
if (username == usr.username && bcrypt.compareSync(password, usr.password)) {
request.session.regenerate(function() {
request.session.user = username;
return response.send(username);
});
} else {
return response.send(401, "Bad Username or Password");
}
}
});
});
已添加:app.use (session());
现在它的工作。
答案 0 :(得分:1)
将我的评论写入答案,因为它似乎解决了您的问题......
Express不会自动拥有request.session
。您必须使用一些像express-session那样创建的中间件。如果您使用的是快速会话,那么您可以添加:
const session = require('express-session');
和
app.use(session({secret: 'my super secret'}));