Configurando nosso projeto Node.js
Primeiro, criaremos um novo projeto Node.js usando o npm:
$ mkdir myapi && cd myapi
$ npm init -yEm seguida, instalaremos as bibliotecas necessárias:
$ npm install express jsonwebtoken bcryptjsEstas incluem Express, um framework popular do Node.js; jsonwebtoken, para lidar com JWTs; e bcryptjs, para criptografar senhas.
Criando o Servidor Básico
Abrimos nosso arquivo index.js e implementamos um servidor básico:
const express = require(express);
const app = express();
app.use(express.json());
app.listen(3000, () => console.log(Servidor em execução na porta 3000));Este código inicia um servidor na porta 3000 e habilita o processamento de JSON solicitações.
Gerenciamento e segurança de usuários
Adicionaremos endpoints básicos para registrar usuários e gerenciar sua autenticação. Criaremos um controlador simples para isso:
// Simulação de banco de dados
let users = [];
app.post(/register, async (req, res) => {
const { username, password } = req.body;
const hashedPassword = await bcrypt.hash(password, 10);
users.push({ username, password: hashedPassword });
res.status(201).send(Usuário registrado com sucesso);
});
app.post(/login, async (req, res) => {
const { username, password } = req.body;
const user = users.find(user => user.username === username);
if (!user ||
)) {
return res.status(401).send(Credenciais inválidas);
}
const token = jwt.sign({ username: user.username }, secretkey);
res.json({ token });
});Protegendo nossas rotas com JWT
Para proteger nossas rotas, você precisará de uma função middleware que valida os tokens:
const authenticateJWT = (req, res, next) => {
const token = req.header(Authorization);
if (!token) return res.sendStatus(403);
jwt.verify(token.split( )[1], secretkey, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
};Então podemos usar esta função em qualquer rota que queiramos proteger.
Juntando tudo
Você pode ver como esses recursos combinados permitem criar aplicativos robustos. Ao usar JWTs, não apenas protegemos nossas rotas VPN e criptografia segura, mas também melhoramos a experiência do usuário, eliminando a necessidade constante de fazer login.
Saiba mais sobre desenvolvimento com Mox aqui.
Comentários
0Seja o primeiro a comentar