Escribí console.log en la devolución de llamada de LocalStrategy pero nunca llamó. Yo uso Sequelize para ORM (MySQL).
pasaporte.js
const LocalStrategy = require('passport-local').Strategy const passport = require('passport') const bcrypt = require('bcrypt') const UrunModel = require('../models/Urun') console.log('File is Called') // If my require is wrong. But this log worked. passport.use(new LocalStrategy({ usernameField: 'mail', passwordField: 'pw1' }, (username, password, done) => { console.log('Worked!') // Never Called UrunModel.findOne({ where : { UrunName : 'testuser', UrunDesc : '123456' } }) } )); passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); });índice.js
const session = require('express-session'); const bodyParser = require('body-parser') const urlencoded = bodyParser.urlencoded({extended:false}) const passport = require('passport') app.use(session({ secret: 'keyboardSecrIncKey', resave: false, saveUninitialized: true, })) app.use(passport.initialize()) app.use(passport.session()) require('./config/passport') //require my passport.js app.post('/test',(req,res,next) => { passport.authenticate('local',{ successRedirect: '/worked', failureRedirect: '/notworked' })(req,res,next) })Me redirige a la URL '/notworked'. Vi 3 o 4 videos pero casi lo mismo en mi código.
¿Dónde estoy fallado? Por favor, explique mi culpa.
De forma predeterminada, LocalStrategy espera encontrar las credenciales en los parámetros denominados nombre de usuario y contraseña. Si su sitio prefiere nombrar estos campos de manera diferente, hay opciones disponibles para cambiar los valores predeterminados.
usa los parámetros mail y pw1 , verifique req.body , porque req.body no tiene estos parámetros en el cuerpo.
su problema se resolverá si reemplaza
{ usernameField: 'mail', passwordField: 'pw1' }con
{ usernameField: 'username', passwordField: 'password' }También puedes consultar la documentación .
Resuelto:
LocalStrategy no se llama cuando hay campos vacíos (usernameField y passwordField)