代码之家  ›  专栏  ›  技术社区  ›  Nicolas Albarracin

快车请求会话使用cookie会话清空

  •  0
  • Nicolas Albarracin  · 技术社区  · 7 年前

    我正在尝试创建一个cookie会话来验证路由中的用户,当用户登录时,我设置了会话:

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

    控制台日志正确地显示了会话,但是当我尝试验证我的路由时

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

    在这里请求会话是空的。

    编辑:我想我知道错误是从我的服务器托管在哪里本地主机:6000,但是客户在本地主机:3000如何我能搞定吗。

    1 回复  |  直到 7 年前
        1
  •  0
  •   c-chavez    7 年前

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

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