A autenticação, ou confirmação da identidade de um usuário em um aplicativo, é fundamental para implementação em aplicativos da web. A autenticação cria um sistema para verificar as credenciais do usuário por meio de nomes de usuário, senhas, tokens, impressões digitais, reconhecimento facial ou perguntas de segurança.

Os desenvolvedores geralmente ficam divididos entre construir seu próprio sistema de autenticação ou usar um serviço de terceiros. Neste artigo, veremos como implementar a autenticação em aplicativos Next.js usando Auth0 .

O que é Auth0?

De acordo com seus documentos, “ Auth0 é uma solução flexível e drop-in para adicionar serviços de autenticação e autorização ao seu formulários”. Basicamente, o Auth0 permite adicionar segurança aos seus aplicativos usando qualquer linguagem ou pilha. Alguns de seus recursos incluem:

Autenticação multifator: requer duas ou mais credenciais para acesso (ou seja, autenticação de dois fatores)
Login social : permite que você se inscreva e faça login em seu aplicativo usando suas redes sociais
Logon único: armazena credenciais, para que você não precise inseri-las a cada login
Analytics: ferramentas analíticas e de relatório

O Auth0 também vem com frameworks e SDKs para várias bibliotecas de front-end prontos para uso. Um deles é o SDK do Auth0 Next.js , que permite adicionar autenticação aos aplicativos Next.js usando Auth0.

SDK do Auth0 Next.js

Primeiro, vamos instalar o pacote Auth0 Next.js SDK do npm. Vamos configurar o Auth0 com base em nossas necessidades exclusivas de projeto e, em seguida, estaremos prontos para implementá-lo!

Com o SDK Auth0 Next.js, podemos adicionar autenticação aos nossos aplicativos usando métodos do lado do cliente e do lado do servidor. No back-end, usaremos rotas de API. No front-end, usaremos a API React Context .

Instalando Auth0

Primeiro, crie uma conta Auth0 . Navegue até o seu Painel Auth0 e clique nos aplicativos. Criar uma nova aplicação; usaremos um aplicativo da web normal.

Você verá um pop-up perguntando qual estrutura ou pilha você está usando. Escolha Next.js.

Clique na guia Aplicativos e selecione o aplicativo criado recentemente. Na guia Configurações , role até a subseção URIs do aplicativo e atualize os seguintes detalhes:

URLs de retorno de chamada permitidos: adicione http://localhost: 3000/api/auth/callback
URLs de logout permitidos: adicione http://localhost: 3000/

Nos snippets de código acima, adicionamos um URL de retorno de chamada para redirecionar os usuários depois que eles registram em nosso aplicativo e um URL de logout para redirecionar os usuários depois que eles se desconectam.

Em nosso painel Auth0, podemos configurar o tipo de autenticação que desejamos para nossos usuários, adicionar páginas de login e inscrição, adicionar registros de usuários e até mesmo adicionar um banco de dados para usuários. Agora, estamos prontos para criar nosso aplicativo Next.js!

Criação de um aplicativo Next.js

Para inicializar um aplicativo Next.js, recomendo usar Criar próximo aplicativo . Esta ferramenta CLI configura automaticamente tudo que você precisa para seu aplicativo. Execute o comando abaixo para criar um novo projeto:

npx create-next-app {nome do projeto}

Como alternativa, você pode usar o Yarn:

yarn create-next-app {nome do projeto}

Em seguida, vá para o diretório do projeto e inicie o servidor de desenvolvimento usando o comando abaixo:

cd {nome do projeto} && yarn run dev

Configurando Auth0 para Next.js

Agora, instalaremos a dependência @ auth0/next.js-auth0 em nosso aplicativo:

npm install @ auth0/nextjs-auth0

Usando o Yarn:

yarn add @ auth/nextjs-auth0

A seguir, vamos instalar o pacote dotenv, que usaremos para armazenar nossas variáveis ​​de ambiente. Também adicionamos componentes estilizados, que usaremos para estilizar nosso aplicativo:

npm install dotenv styled-components

Usando o Yarn:

fios adicionar componentes estilizados dotenv

Crie um novo arquivo chamado.env no diretório raiz do seu projeto e adicione as seguintes credenciais, fornecidas pelo Auth0:

AUTH0_SECRET=”seu segredo de autenticação vai aqui”
AUTH0_BASE_URL=”http://localhost: 3000″
AUTH0_ISSUER_BASE_URL=”seu URL base de auth0″
AUTH0_CLIENT_ID=”seu ID exclusivo vai aqui”
AUTH0_CLIENT_SECRET=”seu segredo auth0 vai aqui”

O AUTH0_SECRET é um segredo de 32 caracteres usado para criptografar cookies e o AUTH0_CLIENT_SECRET pode ser encontrado no painel do Auth0 na guia Configurações.

Você pode ler mais sobre as configurações do Auth0 nos documentos.

Criação de rotas e componentes de aplicativos

Crie uma nova pasta chamada componentes dentro do diretório src em nosso aplicativo Next.js. Dentro da pasta de componentes, crie uma nova pasta chamada Navbar. Dentro do Navbar, crie um arquivo chamado Navbar.jsx.

Vamos criar um componente funcional chamado Navbar com dois links dinâmicos, um para fazer o login de um usuário e outro para desconectar um usuário:

//componentes/Navbar/Navbar.jsx importar {useUser} de”@ auth0/nextjs-auth0″;
importar estilizado de”componentes estilizados”; const Navbar=()=> { const {usuário}=useUser (); Retorna (

);
};

No código acima, criamos um componente funcional chamado Navbar. Dentro dele, inicializamos uma tag nav e adicionamos um h1 com o título de nosso aplicativo. Em seguida, verificamos se o usuário está logado. Se estiver, exibimos o botão Sair. Se eles não estiverem logados, renderizamos um botão Sign in.

A seguir, adicionaremos estilos ao nosso arquivo Navbar:

const Nav=styled.nav` display: flex; alinhar-itens: centro; justify-content: espaço entre; largura: 90%; margem: 0 automático; h1 { tamanho da fonte: 1,4 rem; estilo da fonte: oblíquo; } &> div { display: flex; uma { margem esquerda: 1rem; } } uma { display: bloquear! importante; fronteira: nenhum; esboço: nenhum; plano de fundo: # 5b6d5b; cor: #fff; tamanho da fonte: 1rem; preenchimento: 0,8 rem 2,5 rem; raio da borda: 5px; transição: opacidade 0,7s; decoração de texto: nenhum; &:flutuar { opacidade: 0,8; } }
`;
exportar Navbar padrão;

Nosso componente Navbar deve ser semelhante à imagem abaixo:

Construindo um componente de formulário

Nesta seção, construiremos um formulário para os usuários adicionarem notas a seus aplicativos. Construiremos um campo de entrada, um botão de envio e uma função para enviar nossa nota no componente de formulário.

Usaremos localStorage como banco de dados para armazenar nossas notas:

import {useState} de”react”;
importar estilizado de”componentes estilizados”;
importar {addNote} de”../../utils/utils”; Const Form=({hideForm, setRefresh})=> { const [título, setTitle]=useState (“”); const [content, setContent]=useState (“”); const SubmitHandler=(e)=> { e.preventDefault (); título && conteúdo && addNote (título, conteúdo); setTitle (“”); setContent (“”); hideForm (false); setRefresh (); };

No bloco de código acima, importamos o gancho useState do React e um objeto addNote do diretório de utilitários. Em seguida, criamos um componente de formulário que inclui um hideForm e uma propriedade setRefresh.

A seguir, adicionamos a função SubmitHandler para lidar com o envio de nossas notas. Para que uma nota seja enviada, ela deve conter um título e conteúdo.

Agora, vamos construir um componente e botões para enviar nossas notas usando a função acima:

Retorna (

setTitle (e.target.value)} valor={título} type=”texto” nome=”título da nota” id=”título” placeholder=”por exemplo, sobre hoje” />