George Katsanos
George Katsanos

Reputation: 14165

Local passport authentication strategy gives provisional headers

From my frontend, I'm sending a POST request with a username and password object

const login = data => (
  axios.post('http://localhost:3000/v1/user/login', data)
    .then(response => response.data)
    .catch((err) => {
      throw err;
    })
);

In express, I added /login route inside /routes/v1/user.route.js

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;

and the login controller method:

exports.login = (req, res, next) => {
  passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/404',
    failureFlash: true });
};

and in my server log I see:

POST /v1/user/login - - ms - -
OPTIONS /v1/user/login 204 1.886 ms - 0

But then nothing happens.

Upvotes: 0

Views: 218

Answers (1)

robertklep
robertklep

Reputation: 203286

passport.authenticate() is a middleware (or rather, it's a function that returns a middleware), but you're using it as a regular function (resulting in a stalled request, because there isn't a response being sent back).

Try this:

exports.login = passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/404',
    failureFlash: true
});

Upvotes: 1

Related Questions