Implementar autenticação por e-mail/senha em React
Avalie esse Tutorial
Bem-vindo de volta à nossa jornada de criação de um aplicativo web completo com o MongoDB Atlas App Services, GraphQL e React!
Na primeira parte da série, configuramos o provedor de autenticação de e-mail/senha em nosso serviço de aplicativos de backend. Neste segundo artigo, integraremos a autenticação em um aplicativo da web criado com o React. Gravaremos apenas uma única linha de código do lado do servidor e deixaremos o aplicativo Service lidar com o resto!
Também criaremos o front-end de nosso aplicativo de gerenciamento de despesas, o Expengo, usando o React. Ao final do tutorial de hoje, teremos o seguinte aplicativo web:
Certifique-se de ter o Node.js e o npm instalados na sua máquina. Você pode verificar se estão configurados corretamente executando os seguintes comandos em seu emulador de terminal:
Vamos criar um novo aplicativo React. Inicie seu terminal e execute o seguinte comando, onde "expengo" será o nome do nosso aplicativo:
O processo pode levar até um minuto para ser concluído. Depois de terminar, navegue até seu novo projeto:
A seguir, instalaremos o Realm Web SDK. O SDK permite que aplicativos baseados em navegador acessem dados armazenados no MongoDB Atlas e interajam com Atlas App Services como Functions, autenticação e GraphQL.
Também instalaremos alguns outros pacotes npm para facilitar nossa vida:
- React-router-dom para gerenciar a navegação em nosso aplicativo:
- Material UI para nos ajudar a construir belos componentes sem escrever muito CSS:
Por fim, vamos criar três novos diretórios com alguns arquivos neles. Para fazer isso, usaremos o shell. Você pode usar uma GUI ou seu editor de código, se preferir.
Abra o diretório expengo no seu editor de código. O diretório do projeto deve ter a seguinte estrutura:
Nesta seção, criaremos funções e componentes React em nosso aplicativo para dar aos usuários a capacidade de se conectar, se cadastrar e desconectar.
- Comece copiando o ID do seu aplicativo do App Services:
Agora abra este arquivo:
./src/realm/constants.js
Cole o código a seguir e substitua o espaço reservado pelo seu ID do aplicativo:
Agora vamos adicionar um novo React Context sobre todas as nossas rotas para ter acesso aos detalhes do nosso usuário, como perfil e tokens de acesso. Sempre que precisarmos chamar uma função em nome de um usuário, podemos facilmente fazer isso consumindo esse React Context por meio de componentes filho. O código a seguir também implementa funções que farão todas as interações com nosso servidor do Realm para realizar a autenticação. Confira nos comentários uma descrição específica de cada função.
./src/contexts/user.context.js
Esta é uma página wrapper que só permitirá que usuários autenticados acessem as páginas privadas do nosso aplicativo. Veremos isso em ação em nosso arquivo ./src/App.js.
./src/pages/PrivateRoute.page.js
A seguir, vamos adicionar uma página de login.
./src/pages/Login.page.js
Agora nossos usuários podem fazer login no aplicativo, mas como eles se cadastram? É hora de adicionar uma página de inscrição!
./src/pages/Signup.page.js
Nossa página inicial será uma página básica com um botão de título e desconexão.
./src/pages/Home.page.js:
Vamos conectar todas as nossas páginas no componente raiz do React: aplicativo.
. /src/App.js
Tudo o que você precisa fazer agora é executar o seguinte comando no diretório do seu projeto:
Quando a compilação for concluída, você poderá acessar seu aplicativo a partir do seu navegador em http://localhost:3000/. Você deve conseguir se cadastrar e fazer login no seu aplicativo agora.
Uau! Fizemos um tremendo progresso. A autenticação é uma parte muito importante de qualquer aplicativo e, uma vez feita, podemos nos concentrar em recursos que facilitarão a vida de nossos usuários. Na próxima parte desta série de blogs, usaremos o App Services GraphQL para realizar operações CRUD. Estou empolgado porque a configuração básica já acabou.
Se você tiver quaisquer dúvidas, fique à vontade para nos procurar nos fóruns da MongoDB Community. Criei um tópico de fórum dedicado para este blog, onde podemos discutir qualquer coisa relacionada a essa série de blogs.