当用户登录时,我试图创建一个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();
}
};
此处req.session为空。
编辑:我想我知道错误来自哪里,我的服务器托管在localhost:6000,但是localhost:3000的客户端,我如何使它工作。
答案 0 :(得分:0)
如果两个应用程序都在不同的服务器(不同的主机或端口)上运行,则可以为服务器应用程序设置客户端应用程序的代理,以便客户端应用程序与服务器应用程序在同一服务器上运行。这样,将在同一服务器(主机和端口)内发出请求。
客户端应用中的package.json
"proxy": "http://localhost:6000"