tutorial node authenticate javascript angularjs express passport.js passport-local

javascript - node - passport local mongoose



Pasaporte local devuelve error 400 solicitud incorrecta con Angular (3)

En mi caso (Express 4.0), no estaba usando analizador corporal

Estoy intentando integrar el pasaporte en el formulario de inicio de sesión de mi código. El lado del servidor de llamadas del lado del cliente funciona como debería hasta que llame a pasaporte.authenticate en la solicitud, 400 Bad Request fue devuelto. Que me estoy perdiendo aqui.

HTML

<div> <div class="row"> <div class="input-field col s12"> <input id="user-email" type="text" ng-model="user.email"> <label for="user-email">Your email address</label> </div> </div> <div class="row"> <div class="input-field col s12"> <input id="user-password" type="password" ng-model="user.password"> <label for="user-password">Your password</label> </div> </div> <div id="login-button-panel" class="center-align"> <button class="btn" id="login-btn" ng-click="vm.login(user);">Login</button> </div> <div class="section center"> <a class="modal-trigger">Forgot password?</a> </div> </div>

JS

$http.post(''/api/login'',user).success(function(result){ console.log(result) })

server.js

passport.use(new LocalStrategy( function(username, password, done) { return done(null, false, {message:''Unable to login''}) } )); passport.serializeUser(function(user,done){ done(null,user); }); passport.deserializeUser(function(user,done){ done(null,user); }); app.post(''/api/login'', passport.authenticate(''local''), function(req,res){ res.json(req.user) });


Este error también proviene de intentar acceder a los elementos de HTML DOM sin utilizar body-parser

body-parser es un módulo que le permite recorrer el árbol de documentos html para leer la respuesta, especialmente en el caso de los campos de entrada

Utilizar -

var parser = require(''body-parser''); var urlencodedParser = parser.urlencoded({extended : false}); app.post("/authenticate", urlencodedParser, passport.authenticate(''local''), function (request, response) { response.redirect(''/''); });


Se lanzó una Solicitud incorrecta por pasaporte por falta de acceso en nombre de usuario y contraseña.

Está comprobando la consulta de cuerpo y URL para los campos username y password . Si cualquiera de los dos es falso, la solicitud se rechaza con el estado 400.

Al crear su Estrategia Local, puede pasar un conjunto de opciones en un argumento adicional al constructor eligiendo campos con usernameField diferentes usando las opciones usernameField y / o campo de passwordField . En su caso particular, esto se vería así:

passport.use(new LocalStrategy( {usernameField:"user-email", passwordField:"user-password"}, function(username, password, done) { return done(null, false, {message:''Unable to login''}) } ));