Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Middleware de autenticação na rota de cadastrar usuário

const { Router } = require('express')
const UsuarioController = require('../controllers/usuarioController')
const autenticado = require('../middleware/autenticado')

const router = Router()

router.use(autenticado)

router
    .post('/usuarios', UsuarioController.cadastrar)
    .get('/usuarios', UsuarioController.buscarTodosUsuarios)
    .get('/usuarios/id/:id', UsuarioController.buscarUsuarioPorId)
    .put('/usuarios/id/:id', UsuarioController.editarUsuario)
    .delete('/usuarios/id/:id', UsuarioController.deletarUsuario)

module.exports = router

Para obter um token é necessário antes cadastrar um usuário, portanto não faz sentido incluir autenticação na rota de cadastrar usuário, correto ?

1 resposta
solução!

Olá, Ricardo! Como vai?

Você está correto!

Na sua aplicação, a rota de cadastro de usuários precisa ser uma rota pública, pois é a partir dela que um usuário será criado e poderá receber um token para acessar as outras rotas que exigem autenticação.

No código que você compartilhou, a middleware de autenticação está sendo aplicada a todas as rotas, incluindo a rota de cadastro de usuários. Para resolver isso, você pode aplicar a middleware de autenticação apenas nas rotas que precisam dela, em vez de aplicá-la globalmente.

Aqui está um exemplo de como você pode fazer isso:

const { Router } = require('express')
const UsuarioController = require('../controllers/usuarioController')
const autenticado = require('../middleware/autenticado')

const router = Router()

router
    .post('/usuarios', UsuarioController.cadastrar) // rota pública
    .get('/usuarios', autenticado, UsuarioController.buscarTodosUsuarios) // rota protegida
    .get('/usuarios/id/:id', autenticado, UsuarioController.buscarUsuarioPorId) // rota protegida
    .put('/usuarios/id/:id', autenticado, UsuarioController.editarUsuario) // rota protegida
    .delete('/usuarios/id/:id', autenticado, UsuarioController.deletarUsuario) // rota protegida

module.exports = router

Nesse exemplo, a middleware autenticado é aplicada apenas nas rotas que seguem a rota de cadastro de usuários. Dessa forma, a rota de cadastro de usuários não exigirá um token de autenticação, mas as outras rotas sim.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software