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

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

Página 100 | Ouça em áudio

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:


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.

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

Próxima página do Ebook Gratuito:

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

4 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto