MOX
Produtos
Saiba mais sobre nossos serviços adicionais
Recursos e Elementos
Retornar

MOXAndrés Villalobos
09-09-2025

Tutorial Node.js + Express: Implementando Autenticação JWT em APIs REST

No mundo atual do desenvolvimento web, os aplicativos exigem um sistema de autenticação robusto que permita o gerenciamento seguro do acesso do usuário. Nesse contexto, implementar um sistema baseado em JSON Web Tokens (JWT) tornou-se uma abordagem popular devido à sua simplicidade e eficácia. Este tutorial se concentra em ensinar como criar uma API REST usando Node.js e Express, implementando a autenticação JWT.

O que é JWT?

JSON Web Token (JWT) é um padrão aberto (RFC 7519) que define um formato compacto e independente para a transmissão de informações entre partes como um objeto JSON. Essas informações podem ser verificadas e assinadas digitalmente, tornando-as ideais para autenticação e troca segura de dados.

Pré-requisitos

Antes de começar, certifique-se de ter o Node.js instalado em sua máquina. Além disso, você precisará de algumas ferramentas básicas de desenvolvimento:

  • Node.js: para executar JavaScript no servidor.
  • Express: um framework que facilita a criação de aplicações web.
  • Postman ou Insomnia: para testar solicitações à nossa API.
  • MongoDB: um sistema de banco de dados NoSQL onde armazenaremos os usuários (opcional).

Criando o Projeto

Primeiro, crie uma nova pasta para o seu projeto e navegue até ela a partir do terminal:

$ mkdir jwt-auth-api
$ cd jwt-auth-api

Em seguida, inicialize um novo projeto Node.js executando o seguinte comando:

$ npm init -y

Adicione as dependências necessárias:

$ npm install express mongoose jsonwebtoken bcryptjs dotenv

Estrutura do Projeto

Crie a seguinte estrutura dentro da pasta do seu projeto:

jwt-auth-api/
??? .env
??? app.js
??? models/
??? User.js

Arquivo .env

Crie um arquivo chamado .env para armazenar variáveis sensíveis, como a chave secreta para assinar nossos tokens:

JWT_SECRET=myverysecuresecret

Modelo de Usuário

Crie o modelo de usuário dentro de /models/User.js. Este modelo definirá o esquema do nosso banco de dados:

const mongoose = require(mongoose);
const bcrypt = require(bcryptjs);

const UserSchema = new mongoose.Schema({
username: { type: String, required: true },
password: { type: String, required: true }
});

UserSchema.pre(save, async function(next) {
if (!this.isModified(password)) return next();
this.password = await bcrypt.hash(this.password, 10);
next();
});

module.exports = mongoose.model(User, UserSchema);

Código principal em app.js

Em seguida, estabeleça conexões e defina rotas em app.js:

const express = require(express);
const mongoose = require(mongoose);
const jwt = require(jsonwebtoken);
const User = require(./models/User);
dotenv.config();

const app = express();
appp.use(express.json());
mongoose.connect(mongodb://localhost/jwt-auth, {
useNewUrlParser: true,
useUnifiedTopology: true,
});

app.post(/register, async(req, res) => {
const { nomedeusuário, senha } = req.body;
bconst usuário = new Usuário({ nomedeusuário, senha });
aawait usuário.save();
rres.status(201).json(usuário);
n});
avv.post(/login, async(req, res) => {
pconst { nomedeusuário, senha } = req.body;
tconst usuário = await Usuário.findOne({ nomedeusuário });
sif (!usuário || )) {
nres.status(401).send(Credenciais inválidas);
g}
dtkn = jwt.sign({ id: usuário._id }, process.env.JWT_SECRET);
sres.json({ token });
n});
dapp.listen(3000, () => {
cconsole.log(Servidor rodando na porta 3000);
c});
n
"> torntorln precisoonseresi ://gómico!sublime /aptodo viogato feito por petor de e completori ??????c????????? vamos nos considerar pconnectáto ou por priorização??????????



Outros artigos que podem lhe interessar