IIC2513-2020-1 / syllabus

Material del curso
35 stars 3 forks source link

JWT Tokens se expande para toda la API #157

Closed cacosandon closed 4 years ago

cacosandon commented 4 years ago

Hola!

Estamos usando JWT Tokens para cierta parte de nuestra API, por lo que siguiendo la documentación usamos lo siguiente

router.use('/auth', authApi.routes());
router.use('/objects', objects_api.routes());
router.use('/users', users_api.routes());
router.use('/like', like_api.routes());

// JWT authentication without passthrough (error if not authenticated)
router.use(jwt({ secret: process.env.JWT_SECRET, key: 'authData' }));

router.use(async (ctx, next) => {
  if (ctx.state.authData.userId) {
    ctx.state.currentUser = await ctx.orm.user.findByPk(ctx.state.authData.userId);
  } else {
    ctx.throw(401, 'Wrong');
  }
  return next();
});

router.use('/exchanges', exchanges_api.routes());

Ahora, nos está tirando error de autenticación en toda la API, y no únicamente en /api/exchanges, qué puede ser?

Gracias!

gpvidal commented 4 years ago

Hola @cacosandon ,

Probaste reiniciando el servidor y borrando los node_modules?

Saludos, Gabriel

KnowYourselves commented 4 years ago

Hola @cacosandon!

A mi me pasó lo mismo.

Las soluciones son 2:

  1. Definir un middleware y ponerlo especificamente en las rutas o endpoints privados.
  2. Utilizar unless para definir un grupo de rutas como publicas (hay un ejemplo aquí).

Salu2