IIC2513-2021-1 / projects

Repositorio oficial para los proyectos de ambas secciones del periodo 2021-1 del curso PUC IIC2513
14 stars 6 forks source link

[E2.1] Bookkers: Problemas con JWT #104

Open F-arellano opened 3 years ago

F-arellano commented 3 years ago

Necesito implementar los paths users/me y users/:id, y quiero que solo users/me me pida validación del token. Pasa que si coloco users/me después, al llamar a la ruta la app interpreta 'me' como un id, y retorna un internal server error. Por otra parte, si la coloco al principio entonces users/:id me retorna un authentication error.

Intenté separar las rutas en 2 archivos distintos, pero en el momento en que llamo a router.use(jwt ...), todas las rutas definidas más abajo requieren validación, aunque sean importadas de otros archivos.

¿Hay alguna forma de arreglar esto?

dhvasquez commented 3 years ago

Hay 2 formas de arreglarlo que son relativamente simples:

  1. Usando passthrough: true y luego controlando si existe o no el usuario (se mostro al final de la cápsula)
  2. koa-jwt es un middleware, y como ya debiesen saber se pueden aplicar a una ruta específica tal que router.call(name, route, middleware1, middleware2, ... , callback) y se ejecutan en orden, entonces dado el ejemplo, la autenticación podría ser perfectamente router.get('api.nombre', '/users/me', jwt({ secret: process.env.JWT_SECRET, key: 'authData' }), apiSetCurrentUser, async (ctx) => ...) y es totalmente válido.

Saludos!