/ / Mientras ejecuta passport.authenticate, se muestra como 404 no autorizado en get post - angularjs, node.js, express, passport.js, passport-local

Al ejecutar passport.authenticate, se muestra como 404 no autorizado en get post - angularjs, node.js, express, passport.js, passport-local

Archivo router.js Contiene los enrutadores que se utilizan.

En el ionic2, los proveedores se hacen con el post método dando uri como http://localhost:8080/api/auth/login lo que da 400 Error de solicitud errónea en las herramientas del depurador.

He encontrado que when I removerequireLoginthen the post is working fine.But I needrequireLogin` para autenticar el inicio de sesión local del pasaporte.

router.js

//require the passport strategy from the folder in the project.
var passport = require("passport");
var x = require("./usefile/file");

var requireLogin = passport.authenticate("local",{session: false});

module.exports = function(app){

var auth = express.Router();

app.use("/api/auth", auth);

auth.post("/login", requireLogin, function(req, res){
x.login(req, res)});
}

passport.js

var passport = require("passport");
var JwtStrategy = require("passport-jwt").Strategy;
var ExtractJwt = require("passport-jwt").ExtractJwt;
var LocalStrategy = require("passport-local").Strategy;
var config = require("./auth");
var User = require("../models/user");

var localOptions = {
usernameField: "email",
};

var localLogin = new LocalStrategy(localOptions, function (email, password, done) {
User.find(
{ email: email }, function (err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, { error: "Login failed,Please try again." });
}
if (!isMatch) {
return done(null, false, { error: "Login failed, Please try again." });
}
user.comparePassword(function(password, isMatch){
if(err){
return done(err);
}
if(!isMatch){
return done(null, false, {error:"Login failed, Please try again."});
}
return done(null, user);
});
});
});
passport.use(localLogin);

Nota: Mi código no utiliza el requireLogin que se usa para autenticar el pasaporte, por lo que muestra 400 errores de solicitud errónea.

Por favor ayuda.

Respuestas

0 para la respuesta № 1

¿Ha requerido su archivo de pasaporte local? Parece que necesita el módulo de pasaporte npm y no su archivo local.

Debes cambiar la primera línea de código en router.js a

//require the passport strategy from the folder in the project.
var passport = require("./passport");//<--change this line
var x = require("./usefile/file");

var requireLogin = passport.authenticate("local",{session: false});

module.exports = function(app){

var auth = express.Router();

app.use("/api/auth", auth);

auth.post("/login", requireLogin, function(req, res){
x.login(req, res)});
}

Déjame saber cómo va eso.