es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error: Estrategia de autenticación “local” desconocida.

Estoy utilizando passport para autenticar usuarios, he escrito el siguiente código:
app.ts:

app.get('/login', function(req, res){
    res.render('login');
})

app.use(passport.initialize());
app.post('/login',
    passport.authenticate('local', {
        successRedirect:'/',
        failureRedirect:'/hhhhh',
        failureFlash: true
    })
)
const port = 4000;
app.listen(port, ()=>{
    console.log(`ir a http://localhost:${port}`);
})

y localStrategy.ts:

import { Strategy } from "passport-local";
passport.use(new Strategy(
    function(username: string, password: string, done){
        let user = users.find(u=>username === u.name);
        console.log(user);

        if (!user){
            return done(null, false, {message:'nombre de usuario incorrecto'});
        }
        if(! (password == user.pw)){
            return done(null, false, {message:'contraseña incorrecta'})
        }
        return done(null, user)
    }
))

Obtengo el error:
Error: Estrategia de autenticación desconocida “local”.

Encontré una respuesta que dice que debería agregar una línea de código después de inicializar passport:

require('./ruta/al/archivo/de/configuración/de/passport')(passport);

pero no sé cómo escribirlo en TypeScript, ¿alguien me puede ayudar por favor?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar la línea de código en TypeScript, puedes hacer lo siguiente:

    1. Crea un archivo con la configuración de tu pasaporte, por ejemplo, “passportConfig.ts”. En este archivo, necesitarás importar el módulo de pasaporte y localStrategy:

      import passport from ‘passport’;
      import ‘./localStrategy’;

    2. Exporta una función que reciba la instancia de pasaporte y la configure con las estrategias deseadas:

      export default function (passport: passport.Passport): void {
      passport.serializeUser((user, done) => {
      done(null, user);
      });

       passport.deserializeUser((user, done) => {
           done(null, user);
       });
      
       // Agrega cualquier otra estrategia de pasaporte que necesites aquí, por ejemplo, para la autenticación de Facebook:
       // passport.use(new FacebookStrategy(...));
      

      }

    3. En tu archivo “app.ts”, requiere el módulo “passportConfig.ts” y pasa la instancia de pasaporte a la función exportada:

      import passport from ‘passport’;
      import passportConfig from ‘./passportConfig’;

      // Inicializa el pasaporte
      const app = express();
      app.use(passport.initialize());

      // Configura el pasaporte
      passportConfig(passport);

      // Continúa con la configuración de tu aplicación y rutas

    De esta manera, podrás configurar el pasaporte con tu estrategia local y cualquier otra estrategia que necesites en un módulo separado, y requerirlo en tu archivo app.ts.

Comments are closed.