Autenticação e autorização em API's NodeJS: Autorização com roles e permissões

Capítulo 100

Tempo estimado de leitura: 4 minutos

+ Exercício
Audio Icon

Ouça em áudio

0:00 / 0:00

17.2. Autenticação e Autorização em APIs NodeJS: Autorização com Roles e Permissões

Na criação de APIs robustas e seguras em NodeJS, a autenticação e a autorização são aspectos críticos que garantem a segurança e a integridade dos dados. A autenticação é o processo de verificação da identidade do usuário, enquanto a autorização é o processo de verificação das permissões do usuário autenticado. Neste capítulo, vamos nos concentrar na autorização com roles e permissões.

Entendendo Roles e Permissões

Em uma aplicação, diferentes usuários podem ter diferentes níveis de acesso. Por exemplo, em um sistema de gerenciamento de projetos, um usuário pode ser um 'Administrador', 'Gerente' ou 'Colaborador'. Cada um desses roles pode ter diferentes permissões. Um 'Administrador' pode ter permissão para criar, ler, atualizar e excluir qualquer projeto, enquanto um 'Gerente' pode apenas criar, ler e atualizar projetos, mas não excluí-los. Um 'Colaborador' pode apenas ler projetos. Esses são os roles e permissões.

Implementando Autorização com Roles e Permissões em NodeJS

Para implementar a autorização com roles e permissões em NodeJS, precisamos primeiro criar um modelo de usuário que inclua o role do usuário. Em seguida, precisamos criar uma função middleware que verifique o role do usuário e conceda ou negue acesso com base nesse role.

1. Criando o Modelo de Usuário

Podemos usar o Mongoose, um ODM (Object Data Modeling) popular para MongoDB, para criar nosso modelo de usuário. Aqui está um exemplo de como o modelo de usuário pode parecer:


const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
  name: String,
  email: String,
  password: String,
  role: {
    type: String,
    enum: ['Admin', 'Manager', 'Contributor'],
    default: 'Contributor'
  }
});

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

2. Criando a Função Middleware

Em seguida, precisamos criar uma função middleware que verifique o role do usuário. Podemos fazer isso usando o JWT (JSON Web Token), um padrão de token de acesso que permite a autenticação entre duas partes. Quando um usuário se autentica, um token JWT é gerado e enviado ao usuário. Esse token contém informações sobre o usuário, incluindo seu role. Aqui está um exemplo de como a função middleware pode parecer:

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo


const jwt = require('jsonwebtoken');

function authRole(role) {
  return (req, res, next) => {
    const token = req.header('auth-token');
    if (!token) return res.status(401).send('Access Denied');

    try {
      const verified = jwt.verify(token, process.env.TOKEN_SECRET);
      if (verified.role !== role) return res.status(403).send('Forbidden');
      req.user = verified;
      next();
    } catch (err) {
      res.status(400).send('Invalid Token');
    }
  };
}

module.exports = authRole;

Com essa função middleware, podemos proteger nossas rotas com base no role do usuário. Por exemplo, podemos proteger a rota de exclusão de projeto para que apenas os usuários 'Admin' possam acessá-la:


const express = require('express');
const router = express.Router();
const authRole = require('../middleware/authRole');

router.delete('/project/:id', authRole('Admin'), (req, res) => {
  // Delete project
});

Em resumo, a autorização com roles e permissões é uma parte essencial da criação de APIs seguras em NodeJS. Ela permite que você controle o acesso a diferentes partes de sua aplicação com base no role do usuário. Implementar isso corretamente pode ajudar a prevenir o acesso não autorizado e a proteger os dados de sua aplicação.

Agora responda o exercício sobre o conteúdo:

Qual é o papel da autorização com roles e permissões na criação de APIs seguras em NodeJS?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

A autorização com roles e permissões permite o controle do acesso a diferentes partes da aplicação com base no role do usuário, garantindo que apenas usuários autorizados possam realizar certas ações. Isso é crucial para manter a segurança e integridade da aplicação.

Próximo capitúlo

Autenticação e autorização em API's NodeJS: Implementação de login com redes sociais

Arrow Right Icon
Capa do Ebook gratuito Como criar APIs em NodeJS do básico ao avançado
67%

Como criar APIs em NodeJS do básico ao avançado

Novo curso

149 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.