Ajude o autor lendo o texto no original: ORIGINAL (em inglês)
Neste artigo, você aprenderá a lidar com a autenticação para um servidor do Node usando o Passport.js. O artigo não tratará da autenticação nofront-end. Use-o para configurar a autenticação no back-end (geração de token para cada usuário e proteção das rotas).
Lembre-se de que, se tiver problemas em alguma das etapas, é possível consultar a qualquer momento o repositório do GitHub.
Neste artigo, ensinarei o seguinte:
Tratamento de rotas protegidas
Tratamento de tokens do JWT
Tratamento de respostas não autorizadas
Criação de uma API básica
Criação de modelos e esquemas
Introdução
O que é o Passport.js?
O Passport é um middleware de autenticação para o Node.js. Por ser extremamente flexível e modular, o Passport pode ser colocado sem problemas em qualquer aplicação para a web baseada no Express. Um conjunto extenso de estratégias dá suporte à autenticação usando um nome de usuário e senha, Facebook, Twitter e muito mais. Saiba mais sobre o Passport aqui (documentação em inglês).
Tutorial
Criação do servidor do Node desde o início
Crie um diretório com este arquivo "app.js"dentro dele:
Instalaremos o nodemon para facilitar o desenvolvimento.
npm install -g nodemon
Em seguida, vamos executar nosso "app.js" com ele.
$ nodemon app.js
Criação do modelo de usuário
Crie uma pasta chamada "models"e um arquivo "Users.js" dentro dessa pasta.É aí que definiremos nosso "UsersSchema", ou esquema de usuário. Usaremos JWT e Crypto para gerar o hash e o salt da string password recebida. Isso será usado mais tarde para a validação do usuário.
Vamos adicionar nosso modelo recém-criado ao "app.js".
Adicione a linha seguinte ao "app.js" após configurar o Mongoose:
require('./models/Users');
Configuração do Passport
Crie uma pasta "config" com o arquivo "passport.js" dentro dela:
Nesse arquivo, usamos o método validatePassword que definimos no modelo de usuário. Com base no resultado, retornamos um resultado diferente a partir da LocalStrategy (estratégia local) do Passport.
Vamos conectar o "passport.js" ao arquivo "app.js". Adicione a linha a seguir abaixo de todos os models:
require('./config/passport');
Roas e opções de autenticação
Crie uma pasta chamada "routes" com o arquivo "auth.js" dentro dela.
Nesse arquivo, usaremos a função getTokenFromHeaders para obter um token do JWT que será enviado do lado do client nos cabeçalhos (headers) da solicitação. Também criaremos um objeto auth com as propriedades optional e required. Nós as usaremos mais tarde em nossas rotas.
Na mesma pasta "routes", criamos um arquivo "index.js":
Agora, precisamos de uma pasta "api" dentro da pasta "routes", com outro arquivo "index.js" dentro dela.
Agora, criaremos o arquivo "users.js" que solicitamos em "api/index.js".
Primeiro, criaremos uma rota de autorização opcional"/", que será usada para a criação de um modelo (registro).
Depois disso, criaremos outra rota de autorização opcional"/login". Ela será usada para ativar nossa configuração do Passport e validar uma senha recebida com e-mail.
Por fim, criaremos uma rota de autorização obrigatória, que será usada para retornar o usuário que está logado atualmente. Somente usuários logados (usuários com o token enviado com sucesso por meio dos cabeçalhos de solicitação) têm acesso a essa rota.
Vamos tentar fazer o mesmo sem o token nos "Headers".
Resposta:
Conclusão
Agradeço a leitura deste tutorial. Se perceber erros, informe-os ao autor. Se tiver problemas em qualquer uma das etapas, consulte este repositório do GitHub.
Você também pode entrar em contato com o autor por:
Se você leu até aqui, agradeça ao autor para mostrar que você se importa com o trabalho.
Aprenda a programar gratuitamente. O plano de estudos em código aberto do freeCodeCamp já ajudou mais de 40.000 pessoas a obter empregos como desenvolvedores. Comece agora