Intentando autenticar con pasaporte a través de AngularJS. He encontrado muchos hilos que dicen que el problema es el tipo de contenido predeterminado de la solicitud. Intenté un par de formas y siempre obtengo un Error 400 (Solicitud incorrecta).
$http.post('/login', { username: $scope.user.username, password: $scope.user.password }) .success(function(user) { console.log('success'); // $location.url('/'); }) .error(function() { console.log('failed'); // location.url('/login') })[Corté algunas cosas que no creo que sean el problema]
UDPATE: Creo que esto podría ser un problema con el pasaporte. Usando el middleware del analizador corporal, puedo decir que estoy enviando los datos en el siguiente formato: { nombre de usuario: yo, contraseña: 12345 } Por desgracia, sigo recibiendo el código de error 400.
var bodyParser = require('body-parser'); var jsonParser = bodyParser.json(); app.post('/login', jsonParser, function(req,res) { if (!req.body) { console.log('no body'); return res.sendStatus(400); } console.log(req.body); res.end(req.user); });Esta es la estrategia local.
passport.use(new LocalStrategy( function(username, password, done) { if (username === "me" && password === "123") { return done(null, {name: "me"}); } return done(null, false, {message: 'Incorrect username or password.'}); } ));Y la ruta para cuando intento conseguir pasaporte para trabajar.
app.post('/login',passport.authenticate('local'), function(req,res) { console.log('login in server.js') res.send(req.user); });Bastante seguro de que todo esto es estándar, según todo lo que he leído.
Necesitaba esto...
var bodyParser = require('body-parser'); app.use(bodyParser.json());