request.session.regenerate not working,undefined'undefined'

时间:2016-12-10 19:04:34

标签: javascript node.js

我有这个问题:

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());

现在它的工作。

1 个答案:

答案 0 :(得分:1)

将我的评论写入答案,因为它似乎解决了您的问题......

Express不会自动拥有request.session。您必须使用一些像express-session那样创建的中间件。如果您使用的是快速会话,那么您可以添加:

const session = require('express-session');

app.use(session({secret: 'my super secret'}));