Javascript 快速会话授权

Javascript 快速会话授权,javascript,session,express,cookies,Javascript,Session,Express,Cookies,我是express.js的新手,我正在尝试在您登录后制作会话cookie。我能够启动会话,并且能够成功登录,但是会话似乎没有进入下一个目录。在开始会话之前,我没有包括bodyparser之类的东西 router.use(bodyParser.json()); router.use(bodyParser.urlencoded({ extended: true })); router.use(session({ name: "authorization", secret: "secret",

我是express.js的新手,我正在尝试在您登录后制作会话cookie。我能够启动会话,并且能够成功登录,但是会话似乎没有进入下一个目录。在开始会话之前,我没有包括bodyparser之类的东西

router.use(bodyParser.json());

router.use(bodyParser.urlencoded({ extended: true }));

router.use(session({
name:   "authorization",
secret: "secret",
saveUninitialized: false,
resave: false,
cookie: {
    secure: true,
    httpOnly: true,
    maxAge: 1000 * 60 * 60 * 24,
},
}));

    router.route("/login")
        .get(function(request, response) {

    response.render("../views/partials/login");
})

.post(function(request, response, next) {

    let username = request.body.username;
    let password = request.body.password;

    User.findOne({user: username}, function(err, user) {
        if (err) {
            throw err
        }

        // test password if matching
        if (user !== null) {
            user.comparePassword(password, function(err, match) {
                if (err || !match)
                }

                request.session.user = username;     // These seems to not follow
                request.session.password = password;
            });
        } else {
            response.redirect("/login");
        }
    });

});
但当我重定向到“/home”时,request.session.user返回undefined

request.session.user -> undefined

function restrict(req, res, next) {
    if (req.session) {
        next();
    } else {
        req.session.error = "Access denied!";
        res.sendStatus(403);
    }
}
router.route("/home")
.get(restrict, function(request, response) {
    console.log(request.session.user) ---> undefined
为什么cookie中没有任何用户

对不起,如果这是一个问题

(另外,我不想使用任何平台,如passport等)
(另外,我知道错误处理不是最好的,但它是暂时的)

关于您的cookie.secure标志,来自文档:

注意:小心 将此设置为true时,as兼容客户端将不会发送 如果浏览器没有cookie,将来会将cookie返回到服务器 HTTPS连接


根据您的评论,您不使用https连接,并且cookie不会发送到服务器

你使用cookie解析器中间件吗?@Mouneer是的,我使用!关于您的cookie.secure标志,来自文档:
注意将此设置为true时要小心,因为如果浏览器没有HTTPS连接,兼容的客户端将不会在将来将cookie发送回服务器。
那么您使用HTTPS连接吗?这实际上使其工作,真不敢相信我在文档中漏掉了这一点,而且就这么简单。谢谢@Mouneer:)太好了,请检查我的答案。很乐意帮忙:)