Fabriciojf.com Wiki
  • FAQ
    • APIs
      • FAQs Favoritos

        Qual é a sua dúvida?

        •  Página inicial do FAQ
        • Node.js
        • Segurança em app node com JWT

        Segurança em app node com JWT

        Exemplo didático para segurança em api via JWT no NodeJS

        Instalando as dependências

        $ cd [project_folder]
        $ npm install --save jsonwebtoken dotenv-safe
        

        No início do index.js do projeto ou do seu arquivo de entrada do sistema, insira o conteúdo abaixo:

        $ nano index.js

        const dotenv = require("dotenv"); dotenv.config(); ...

        Crie o arquivo .env no diretório raiz do projeto com o conteúdo abaixo:

        $ nano .env
        #.env, don't commit to repo SECRET=123456

        Crie o arquivo de configurações

        $ nano config.js
        
        module.exports = {
            secret: {
                id: "125453",
                user: "admin",
                password: "123456",
                key: "lukejedimaster"
            }
        }
        

        Crie a classe jwt-security.js com o conteúdo abaixo

        $ nano jwt-security.js
        
        const config = require("./config");
        const jwt = require("jsonwebtoken");
        
        class JwtSecurity {
          login(req, res) {
        
            console.log(req.body);
            if (
              req.body.user === config.secret.user &&
              req.body.password === config.secret.password
            ) {
              var id = config.secret.id;
              var token = jwt.sign({ id }, process.env.SECRET, {
                expiresIn: 300 // 5min
              });
              return res.json({ auth: true, token: token });
            }
            res.status(500).json({ message: "Login inválido!" });
          }
        
          logout(req, res) {
            res.json({ auth: false, token: null });
          }
        
          verify(req, res, next) {
            var token = req.headers["x-access-token"];
            if (!token)
              return res
                .status(401)
                .json({ auth: false, message: "No token provided." });
        
            jwt.verify(token, process.env.SECRET, function(err, decoded) {
              if (err)
                return res
                  .status(500)
                  .json({ auth: false, message: "Failed to authenticate token." });
        
              // se tudo estiver ok, salva no request para uso posterior
              req.userId = decoded.id;
              next();
            });
          }
        }
        
        module.exports = new JwtSecurity();
        

        Para controlar a segurança dentro da classe de routes siga o exemplo abaixo, inserindo o uso da function jwt.verify

        ...
        var router = require('express').Router();
        const jwt = require("./jwt-security");
        ...
        router
            .post('/events', jwt.verify,  eventsDb.save(req,res))
            .post('/contacts', jwt.verify, contactsDb.save(req, res))
            .post("/login", jwt.login)
            .post("/logout", jwt.logout);
        
         Página inicial do FAQ
        • FAQ
          • APIs
            • FAQs Favoritos

              © Copyright 2026 Fabriciojf.com  Criado por FábioCostaMKT   Pastes   Administração