• Home

    Escolha seu Plano

    Carreiras Alura

    Evolua com profundidade técnica, direção clara e aplicação prática.

    Jornadas guiadas do básico ao avançado com checkpoints práticos, desenhadas para quem busca profundidade e protagonismo técnico.

    Iniciante

    Comece do zero com uma trilha clara e progressiva.

    Fundamentos práticos para dar os primeiros passos com segurança e construir uma base sólida.

    Intermediário

    Continue sua evolução com cursos que conectam fundamentos, ferramentas e prática profissional. Ganhe autonomia, e avance para projetos mais completos.

    Avançado

    Aprofunde temas técnicos e estratégicos para enfrentar desafios mais complexos. Explore boas práticas, arquitetura, performance com visão profissional.

    Cursos

    Ver mais cursos de Back-end
    • Pensamento computacional: fundamentos da computação e lógica de programação
    • Lógica de programação: mergulhe em programação com JavaScript
    • DDD: fundamentos do design orientado a domínio
    • ASP.NET: autenticação e autorização em APIs e aplicações web
    • Microsserviços: migração de monólitos e modularização

    Cursos

    Ver mais cursos de Dados
    • Python para Dados: primeiros passos
    • Excel: domine o editor de planilhas
    • Engenharia de Dados: Orquestração de Pipelines com Apache Airflow
    • Power BI Desktop: construindo meu primeiro dashboard
    • Governança e Arquitetura de Dados

    Cursos

    Ver mais cursos de Inteligência Artificial
    • IA: Explorando o Potencial da Inteligência Artificial Generativa
    • Engenharia de Prompt: Criando Prompts Eficazes para IA Generativa
    • Claude para Análise de Dados: prompts, integrações e automações
    • Agno: criando agentes e sistemas multiagente
    • Engenharia de software na era da IA: segurança de aplicações com agentes, MCPs e código gerado por IA

    Cursos

    Ver mais cursos de Front-end
    • HTML e CSS: ambiente, estrutura e estilo
    • React: realizando testes avançados com Jest e Testing Library
    • React: integrando TypeScript em projetos
    • JavaScript: aprendendo a programar
    • React: aplicando arquiteturas de Micro frontends

    Cursos

    Ver mais cursos de DevOps
    • Sistema Operacional Linux: fundamentos e administração prática
    • Containers e Docker: empacotamento, isolamento e gestão
    • Redes: dos conceitos iniciais à criação de uma intranet
    • Linux: gerenciando diretórios, arquivos, permissões e processos
    • Cibersegurança: Fundamentos e práticas integradas

    Cursos

    Ver mais cursos de UX & Design
    • UX Research: mapeando a experiência da pessoa usuária
    • UX/UI Design: Entregando produtos digitais com IA
    • UI Design: Prototipação e animações interativas
    • Figma: Conhecendo o programa
    • Product Design: métricas e ciclo de vida do produto

    Cursos

    Ver mais cursos de Gestão & Negócios
    • Canva: Criação de landing pages e e-mail marketing
    • Agilidade: como ela pode ajudar a criar um time de alta performance
    • Google Analytics 4: Extrair insights e configurar eventos
    • Management 3.0: gerencie o ambiente, não as pessoas
    • Automação de processos com n8n: Inteligência de dados para Marketing

    Cursos

    Ver mais cursos de Mobile
    • React Native: Estilização e Layouts com Flexbox e StyleSheet
    • Flutter: Graphql e suporte offline
    • Android com Gemini: Trabalhando com textos e imagens na IA
    • Dart: trabalhando com orientação a objetos
    • React Native: Dominando Listas com FlatList e ScrollView

    Carreiras

    Ver mais carreiras
    • Especialista em IA
    • Engenharia de IA
    • Ai native software engineering
    • Arquitetura de Soluções com IA
    • AI Product Design
    • Engenharia de Machine Learning
    • Desenvolvimento Front-End React
    • Engenharia de Dados
    • Cloud Security
    • Social Media Marketing
    • Engenharia de Agentes de IA

    Cursos

    • Engenharia de Prompt: Prompts Eficazes para IA Generativa
    • Claude Code: Criando sua Primeira Aplicação
    • Python: Crie sua Primeira Aplicação
    • Git e GitHub: Compartilhando e Colaborando
    • N8N: Fluxos de Trabalho Avançados

    Cursos

    • Copilot Studio: Solução Multiagentes
    • Padrões de API HTTP e Modelagem de APIs
    • Python para Análise de Dados com SQL
    • Docker: Criando e Gerenciando Containers
    • Design com IA: Otimizando o Processo Criativo

    Cursos

    • Model Context Protocol (MCP)
    • Spec-Driven Development: Dev Assistido por Agentes
    • Arquitetura de Sistemas Distribuídos com Java
    • Governança de Modelos e Reprodutibilidade
    • Pentest: Vulnerabilidades em Aplicações Web

    Escolha seu Plano

    Skills & Go

    O Skills & Go é para Tech Leads, Product Managers, estrategistas e early adopters que transformam ideias em soluções de alto impacto. Em cursos ao vivo e 100% online, você domina a nova era da IA em tempo real.

    Aulas ao vivo

    Saiba mais
    • Agentic Engineering: orquestre múltiplos agentes com confiabilidade
    • Building AI Products: transforme ideias em produtos reais com IA
    • AI Data Strategy: transforme dados em decisões estratégicas com IA

    Escolha seu Plano

    Eventos Alura

    Nossos eventos são pensados para quem quer estar à frente das mudanças em tecnologia, IA e inovação. Em experiências presenciais, você acompanha tendências e se conecta com especialistas que estão moldando o futuro.

    Próximos eventos

    • Imersão Engenharia de Software: Dev na Era da IA
    • IA Conference
    • Alura Signals
  • Talent Lab
  • IA

    Escolha seu Plano

    Conteúdos gratuitos

    Explore conteúdos gratuitos para aprender tecnologia no seu ritmo. Encontre artigos com conteúdos técnicos para aprender na prática, notícias para acompanhar as principais tendências do mercado e o Alura Labs, com análises e reflexões de especialistas sobre tecnologia, IA e carreira.

    Conteúdos gratuitos

    • Artigos
    • Notícias
    • Alura Labs
  • Para Empresas
Ver planos
Links principais
  • Planos e Promoções
  • Links complementares do menu mobile
  • Talent lab
  • Inteligência Artificial
  • Pós Graduações
  • Para Empresas
  • Sobre a Alura
  • Grupo Alun
  • Entrar
    • Home
    • Carreiras
    • Skills & Go
    • Talent Lab
    • Inteligência Artificial
    • Pós Graduações
    • Artigos
    • Sobre a Alura
    • Grupo Alun
    LoginContato
    • LinkedIn
    • Instagram
    • YouTube
    1. Página inicial
    2. Front-end
    3. Segurança do Next.js 14+ com Middlewares

    Segurança do Next.js 14+ com Middlewares

    7 min7 minutos de leitura

    7 min7 minutos de leitura

    Publicado: 27/08/2024

    1. O que é Middleware afinal?
    2. Como criar uma middleware
    3. NextResponse e Matcher
    4. Bibliotecas de autenticação
    5. Conclusão

    Salve o/

    Preparado(a) para levar a segurança da sua aplicação Next.js 14+ para outro nível?

    Hoje vamos mergulhar no mundo mágico das Middlewares e descobrir como elas podem transformar a forma como você protege suas rotas e dados.

    Se você já se perguntou como manter seu dashboard de usuários protegido enquanto exibe suas páginas de marketing de forma pública, este artigo é para você!

    Vamos explorar como configurar Middlewares para autenticação, proteger rotas específicas, redirecionar usuários não autorizados e muito mais.

    Imagina só: você consegue controlar quem pode acessar cada pedacinho do seu site, garantindo que só usuários(as) autenticados(as) possam ver o que importa, enquanto curiosos ficam do lado de fora.

    E tudo isso de uma maneira centralizada, usando o poder das Middlewares do Next.js.

    Então, pega sua caneca de café, acomode-se confortavelmente, e vamos nessa jornada juntos(as) para dominar as Middlewares no Next.js 14+!

    O que é Middleware afinal?

    Antes de mergulharmos no código, vamos entender o que é uma Middleware. Pense na Middleware como uma sentinela no portão do seu castelo digital.

    Ela verifica quem está entrando e saindo, garantindo que apenas os(as) convidados(as) certos(as) possam acessar áreas especiais, enquanto os(as) curiosos(as) ficam nos jardins públicos.

    Em termos mais técnicos, Middleware é um pedaço de código que é executado antes que uma requisição seja completada, permitindo que você modifique a resposta ao reescrever, redirecionar, modificar headers ou até mesmo responder diretamente.

    No Next.js, Middleware é essencial para proteger rotas específicas, realizar redirecionamentos baseados em condições, detectar bots e muito mais.

    E o melhor de tudo, ela roda antes que o conteúdo cacheado e as rotas sejam correspondidos, garantindo uma camada adicional de segurança e controle.

    Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

    Como criar uma middleware

    Vamos colocar a mão na massa e criar uma Middleware básica para autenticação em uma aplicação Next.js. Siga os passos abaixo para configurar a Middleware e proteger suas rotas.

    Crie um arquivo chamado middleware.ts ou middleware.js na raiz do seu projeto. Este será o coração da sua Middleware, onde toda a mágica acontecerá.

    Dentro do arquivo middleware.ts, vamos incluir a lógica para verificar a autenticação do usuário.

    Vamos checar se o usuário tem um token de autenticação válido e redirecioná-lo conforme necessário.

    import type { NextRequest } from 'next/server'
    import { NextResponse } from 'next/server'
    export function middleware(request: NextRequest) {
      const currentUser = request.cookies.get('currentUser')?.value
      // Se o usuário estiver autenticado e tentar acessar a página de login, redirecioná-lo para o dashboard
      if (currentUser && request.nextUrl.pathname === '/login') {
        return NextResponse.redirect(new URL('/dashboard', request.url))
      }
      // Se o usuário não estiver autenticado e tentar acessar qualquer página protegida, redirecioná-lo para a página de login
      if (!currentUser && request.nextUrl.pathname.startsWith('/dashboard')) {
        return NextResponse.redirect(new URL('/login', request.url))
      }
      // Permitir que a requisição continue para outras rotas não protegidas
      return NextResponse.next()
    }
    export const config = {
      matcher: ['/((?!api|_next/static|_next/image|.*\\.png$).*)'],
    }
    

    Primeiro, importamos NextRequest e NextResponse do Next.js. Esses são fundamentais para manipular requisições e respostas.

    Em seguida, verificamos se há um cookie chamado currentUser, que indica se o usuário está autenticado.

    Quando o usuário está autenticado e tenta acessar a página de login (/login), redirecionamos ele para o dashboard (/dashboard).

    Se ele já está logado, não faz sentido deixá-lo voltar para a página de login. Por outro lado, se o usuário não estiver autenticado e tentar acessar qualquer página dentro do dashboard (/dashboard), mandamos ele de volta para a página de login (/login). Isso garante que apenas pessoas autorizadas entrem em áreas restritas.

    Se nenhuma dessas condições for atendida, permitimos que a requisição continue normalmente para outras rotas não protegidas.

    Finalmente, configuramos as rotas usando o matcher para especificar quais devem ser protegidas pela Middleware.

    Excluímos rotas de API, arquivos estáticos e imagens, garantindo que nossa Middleware não interfira com esses recursos.

    NextResponse e Matcher

    Agora que entendemos a lógica básica da nossa Middleware, vamos falar sobre alguns componentes-chave que utilizamos: NextResponse e matcher.

    • NextResponse: É uma classe do Next.js que nos permite manipular a resposta da requisição. Usamos NextResponse.redirect para redirecionar o usuário para uma nova URL com base em certas condições. Além de redirecionamentos, NextResponse pode ser usado para definir headers, cookies e até responder diretamente a uma requisição.
    • Matcher: O matcher é uma configuração que define quais rotas a Middleware deve proteger. No nosso exemplo, usamos um padrão que inclui todas as rotas, exceto as rotas de API, arquivos estáticos e imagens. Isso é feito para garantir que a Middleware seja aplicada apenas às páginas que realmente precisam de proteção.

    Bibliotecas de autenticação

    Implementar autenticação pode ser uma tarefa complexa, mas felizmente existem várias bibliotecas que podem simplificar esse processo no Next.js.

    Vamos dar uma olhada em algumas das opções mais populares e como elas podem ajudar.

    NextAuth.js: É uma solução de autenticação completa para Next.js que suporta várias estratégias de autenticação, incluindo OAuth, autenticação baseada em e-mail/senha, e autenticação com provedores como Google, Facebook, e GitHub. NextAuth.js facilita a integração com diversos provedores e gerencia tokens, sessões e callbacks de autenticação para você.

    Auth0: Auth0 é uma plataforma de identidade que fornece autenticação e autorização como serviço. Ele suporta OAuth 2.0, OpenID Connect, e muitos outros padrões de autenticação. Com Auth0, você pode configurar autenticação social (como Google e Facebook), autenticação multifator (MFA), e Single Sign-On (SSO) com facilidade. Auth0 também oferece uma integração Next.js bem documentada.

    Firebase Authentication: Parte do Firebase, essa solução permite que você adicione autenticação a seu aplicativo usando apenas algumas linhas de código. Firebase Authentication suporta várias formas de autenticação, incluindo e-mail/senha, telefone e provedores como Google e Facebook. É uma excelente opção para quem já está utilizando outras funcionalidades do Firebase em sua aplicação.

    OAuth (Open Authorization): É um padrão aberto para autorização que permite que aplicativos obtenham acesso limitado a recursos de usuário sem expor as credenciais do usuário. Em vez disso, OAuth utiliza tokens de acesso para conceder permissões específicas a aplicativos.

    Existem dois principais tipos de fluxo de OAuth:

    • Authorization Code Flow: Utilizado principalmente para aplicativos web, onde o servidor do aplicativo redireciona o usuário para o provedor de autenticação (como Google ou Facebook). Após o usuário autenticar e autorizar o aplicativo, o provedor redireciona de volta para o servidor do aplicativo com um código de autorização, que pode ser trocado por um token de acesso.

    • Implicit Flow: Utilizado para aplicativos de cliente único (Single Page Applications), onde o token de acesso é obtido diretamente do provedor de autenticação sem a necessidade de um código de autorização intermediário. Este fluxo é mais simples, mas menos seguro que o Authorization Code Flow.

    Conclusão

    E aí, pronto(a) para transformar a segurança da sua aplicação Next.js 14+? Vimos como as Middlewares são ferramentas poderosas e versáteis que podem ser usadas para proteger rotas, redirecionar usuários, detectar bots, e muito mais.

    Desde a configuração básica de Middlewares até o uso de bibliotecas avançadas como NextAuth.js, Auth0 e Firebase Authentication, você agora tem o conhecimento para implementar autenticação e melhorar significativamente a segurança da sua aplicação.

    Entendemos também o papel crucial do OAuth na autorização, permitindo que aplicativos obtenham acesso seguro a recursos de usuário sem expor suas credenciais.

    E com exemplos práticos, como a implementação de autenticação com GitHub usando NextAuth.js, você tem um ponto de partida sólido para aplicar essas técnicas no seu projeto.

    Mas isso é apenas o começo! Se você quer se aprofundar ainda mais e dominar a arte de implementar autenticação em Next.js, recomendo o curso "Next.js: Implementando Autenticação com NextAuth.js".

    Este curso oferece uma abordagem prática e detalhada, cobrindo tudo o que você precisa saber para criar uma aplicação segura e eficiente. Não perca a oportunidade de elevar suas habilidades a um novo patamar.

    Então, pegue sua caneca de café, revise esses conceitos e mãos à obra. A segurança da sua aplicação está em boas mãos – as suas!

    Referências:

    • Next: Middleware
    • Next: Authentication
    • Auth0
    • NextAuth.js
    • Documentação do Firebase
    Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

    Avalie este artigo

    • Foto de Vinicios Neves

      Autor(a)

      Vinicios Neves

      Vinicios Neves, Tech Lead e Educador, mistura código e didática há mais de uma década. Especialista em TypeScript, lidera equipes full-stack em Portugal e inspira futuros desenvolvedores na FIAP e Alura. Com um pé no código e outro no ensino, ele prova que a verdadeira engenharia de software vai além das linhas de código. Além de, claro, ser senior em falar que depende.

    Explore por tópico

    • Back-end
    • Dados
    • DevOps
    • Front-end
    • Gestão & Negócios
    • Institucionais
    • Inteligência Artificial
    • Mobile
    • UX & Design

    Leia também

    • 03/02/2021

      Começando com Front-end: entenda os conceitos, as áreas e as tecnologias que você precisa estudar

      Ler mais
    • 15/09/2020

      O Front End vai acabar? Uma reflexão sobre a profissão

      Ler mais
    • 25/03/2026

      CSS Border: como usar sem cometer erros com agentes

      Ler mais
    Ver mais conteúdos

    Inscreva-se em nossa Newsletter

    Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.

    Institucional

    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status
    Institucional
    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status

    A Alura

    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes
    A Alura
    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes

    Conteúdos

    • Alura Cases
    • Imersão Engenharia de Software: Dev na Era da IA
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Conteúdos
    • Alura Cases
    • Imersão Engenharia de Software: Dev na Era da IA
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Alura