我正在尝试创建一个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如何我能搞定吗。