Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

111
Vistas
Koa y Pasaporte Credenciales faltantes

Tengo un servidor Koa que usa Passport para autenticar a los usuarios contra un Array y un cliente React. Después de un inicio de sesión exitoso, las siguientes solicitudes no se autentican ya que la cookie no está definida. El parámetro de error de la función de authenticate tiene:

 { message: 'Missing credentials' }

Después de navegar por el sitio, solucioné los errores habituales, llamé a la función de authenticate devuelta, agregué {credentials: 'include'} para fetch , etc., pero sigo teniendo el mismo problema.

Lista de middleware: router.use(cookie.default());

app.use :

koa-body, koa-session-store (también probado con koa-session), pasaporte.inicializar(), pasaporte.sesión(), enrutador.rutas(), koa-static

estrategia local

 passport.use(new Strategy((username,password,callback)=>{ var u = users.find(u=>u.username == username); return (u && password == 'password')? callback(null, u ):callback('user not found', false); }));

/iniciar sesión autenticar

 .post('/login', (ctx)=>{ console.log(ctx.request.body); return passport.authenticate('local',(err,user,info,status)=>{ if(user) { ctx.login(user); ctx.body = {success: true}; // works correctly ctx.redirect('/login-success'); } else { ctx.redirect('/login-failure'); } })(ctx); });

/Inicio de sesión exitoso

 router.get('/login-success',async(ctx)=> { return passport.authenticate('local',(err,user,info,status)=>{ console.log(err); // "Missing credentials" })(ctx); await ctx.response; ctx.body = {success: true}; }).

llamada de cliente

 let body = JSON.stringify({username: this.state.username, password: this.state.password}); let result = await fetch('http://localhost:4200/login',{method:'POST',credentials: 'include',body, headers:{'Content-Type':'application/json'}});
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La solución es realmente simple, pero la razón es difícil de encontrar.

el middleware async debe llamar await next() o return next() al final. De lo contrario, se genera un error 404.

Al agregar await next() a la devolución de llamada async /login-success , se solucionó el problema.

Documentación: https://github.com/koajs/koa/blob/master/docs/troubleshooting.md#my-middleware-is-not-called

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda