从我的前端,我发送一个带有用户名和密码对象的POST请求
const login = data => (
axios.post('http://localhost:3000/v1/user/login', data)
.then(response => response.data)
.catch((err) => {
throw err;
})
);
在express中,我在/routes/v1/user.route.js中添加了/ login路由
const controller = require('../../controllers/user.controller');
const router = express.Router();
router.route('/register')
.post(controller.register);
router.route('/login')
.post(controller.login);
module.exports = router;
和登录控制器方法:
exports.login = (req, res, next) => {
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/404',
failureFlash: true });
};
在我的服务器日志中,我看到:
POST /v1/user/login - - ms - -
OPTIONS /v1/user/login 204 1.886 ms - 0
但是没有任何反应。
答案 0 :(得分:1)
passport.authenticate()
是一个中间件(或者更确切地说,它是一个返回中间件的函数),但是你将它用作常规函数(导致停止的请求,因为没有响应被发送回)。
试试这个:
exports.login = passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/404',
failureFlash: true
});