Validação de login em API | Node.js e HTTP: desenvolvendo uma API seguindo o estilo REST | Solucionado
Validação de login em API
Referente ao curso Node.js e HTTP: desenvolvendo uma API seguindo o estilo REST
(364.4k xp, 102 posts)
Estou trabalhando num sisteminha pra controlar o horário de alimentação dos meus doguinhos, apenas para estudo, entretanto estou tendo um pequeno problema com o sistema de login, apesar dele verificar se o usuário está logado e proteger os recursos, quando envio uma requisição sem o header "auth" com o JWT, além dele mandar a response com o status 401 de não autorizado, ele também tenta mandar a response com status 500, o que imprime um erro no console. A aplicação funciona normalmente, mas gostaria de remover esse erro de alguma forma.
Esse é o método que valida o login, caso o token não seja enviado ela responde a requisição com um 401.
static async verifyLogin(req, res){
const decoded = await JwtHelper.verifyJwt(req.headers.auth);
res.status(401).send({ error: "Efetue o login antes de prosseguir." });
Esse é um exemplo de método do controler.
async getAll(req, res){
const loginData = await LoginHelper.verifyLogin(req, res);
const ownerId = loginData.user.id;
let dogs =  await this._dogDao.findAll({ ownerId });
dogs = ListHelper.createListCheckingActive(dogs, DogFactory.createFromMongo);
res.status(200).send(dogs);
res.status(500).send({ error: "Não foi possível carregar os cachorros."})
Gostaria de saber alguma forma de contornar essa situação, se há como, por exemplo, o erro só cair no "catch" do verificador de login e o método no qual ele é utilizado simplemente parar a execução quando ele ocorre.
(1005.4k xp, 1150 posts)
Tente fazer da seguinte forma, altera a sua função "verifyLogin" para retornar um objeto contendo se houve ou não sucesso na validação do "auth". Na função "getAll", faça a implementação dos retornos (200, 404, 500).