用cookie-session表示req.session为空 [英] express req.session empty with cookie-session

查看:79
本文介绍了用cookie-session表示req.session为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当用户登录时,我试图创建一个cookie会话来验证我的路由中的用户:

Im trying to create a cookie-session to authenticate users in my routes, when the use logs in i set the session:

router.post('/login', (req, res, next) => {
    model.User.findOne({
        email: req.body.email,
        password: hash(req.body.password)
    }).lean().exec().then(
        user => {
            if (!user) {
                return res.status(401).send({message: 'Invalid email and/or password'});
            }
            req.session.user = user;
            req.session.authorized = true;
            console.log(req.session);
            return res.send({token: createJWT(user)});
        }
    ).catch(next);
});

该控制台日志正确显示了会话,但随后当我尝试对路由进行身份验证时

that console log shows the session correctly but then when i try to authenticate my routes

const {Router} = require('express');
const winston = require('winston');

module.exports = router => {
    winston.info('Loading public-api...');
    router.use('/', require('cors')(), require('./public-api')(Router()));

    router.use('/api', require('cors')(), require('./api')(Router().use(global.app.security.authorize())));

    router.use('/auth', require('cors')(), require('./auth')(Router()));
};

然后授权服务

module.exports = () =>
    (req, res, next) => {
    console.log(req.session);
        if (req.session.authorized) {
            req.user = req.session.user;
            return next();
        }
    };

此处req.session为空.

here req.session is empty.

我想我知道错误来自哪里,我的服务器托管在localhost:6000中,但是localhost:3000的客户端中,我该如何使其正常工作.

i think i know where the error is from my server is hosted in localhost:6000 but the client in localhost:3000 how can i make it work.

推荐答案

如果两个应用程序都在不同的服务器(不同的主机或端口)中运行,则可以为服务器应用程序设置客户端应用程序的代理,以便客户端应用程序运行与服务器应用程序位于同一服务器上.这样,将在同一服务器(主机和端口)内发出请求.

If both apps run in different servers (different host or ports), you can set a proxy for your client app towards your server app so that the client app runs in the same server as your server app. In this way requests will be made within the same server (host and port).

package.json

"proxy": "http://localhost:6000"

这篇关于用cookie-session表示req.session为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆