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 remove
requireLoginthen the post is working fine.But I need
requireLogin` 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.