Nas lições anteriores,
vimos várias estratégias para autenticação do usuário.
Começamos com a autenticação básica
e, em seguida, passamos para cookies e sessões expressas
como uma forma de autenticar e rastrear usuários.
Nesta lição, veremos Passport,
um módulo de nó que torna a autenticação muito fácil
, discreta e direta de configurar em seu aplicativo.
Passport é nada além de um middleware de autenticação que suporta
várias estratégias que podem ser usadas para autenticação do usuário,
incluindo uma estratégia local como usar nome de usuário e senha,
ou até mesmo autenticação de terceiros ou usando OAuth ou OAuth 2.0,
como usar Facebook, Twitter,
ou Google+ e assim por diante.
Vamos olhar para alguns detalhes sobre Passport,
a autenticação local suportada Passport.
E no exercício que se segue,
atualizaremos nosso aplicativo para fazer uso dos
módulos Passport e Passport Local Node para habilitar.
autenticação local usando nome de usuário e senha.
Então, como eu disse um pouco antes, o
Passport é um middleware de autenticação muito útil para aplicativos Node.js.
Isso torna mais simples implementar a autenticação.
Como vimos nos exercícios anteriores, a
autenticação envolve um monte de código repetitivo e tarefas repetitivas
manipulando erros e criando formas de verificar a
autenticação do usuário e, em seguida, autenticar o usuário e assim por diante.
Tudo isso é simplificado dentro do Passport usando
várias estratégias que podem ser usadas para autenticar usuários.
Você pode usar uma estratégia local, por exemplo, que é baseada em
registrar usuários em seu sistema usando um nome de usuário
e senha, e depois autenticá-los usando o nome de usuário e senha. O
Passport também suporta autenticação baseada em OpenID
ou autenticação baseada em OAuth ou OAuth 2.0,
como é suportado por autenticadores de terceiros como Facebook,
Twitter, Google+ e assim por diante.
Também podemos usar o que é chamado como
tokens da web JSON como outra forma de autenticação chamada autenticação baseada em tokens.
Analisaremos a autenticação baseada em tokens na parte posterior desta lição.
Além disso, Passport suporta sessões.
Como vimos no exercício anterior e na lição anterior, as
sessões expressas são uma maneira fácil de rastrear usuários no
lado do servidor e ser capaz de atender solicitações recebidas de clientes.
Para fazer uso do Passport, é claro,
vamos instalar o módulo Passport.
Nós também, no exercício que se segue,
instalaremos o módulo Passport-Local para
fornecer a estratégia local para autenticação do usuário.
O uso do Passport dentro da nossa aplicação é bastante simples.
Nas rotas em que queremos executar a autenticação,
nós apenas especificar passaporte autenticar e, em seguida, especificar
a estratégia de autenticação específica que queremos usar para a autenticação do usuário.
Como exemplo aqui,
você vê que estamos aplicando
uma autenticação local dizendo autenticar passaporte e local.
E assim ele usa a estratégia local para autenticar os usuários.
Se a autenticação for bem-sucedida,
o middleware passa para a próxima etapa,
onde podemos processar ainda mais a solicitação de entrada.
Assim, após a conclusão da autenticação bem-sucedida do passaporte do usuário, o
próprio Passport adiciona uma propriedade de usuário à mensagem de solicitação.
Assim, req.user torna-se disponível para nós com as informações do usuário lá,
que podemos posteriormente usar dentro de
nossa aplicação expressa para lidar com a solicitação proveniente de usuários específicos.
Assim, isso nos ajuda facilmente a identificar qual cliente enviou a solicitação para
nosso aplicativo e, consequentemente, atender
a solicitação em conformidade com base na identidade do usuário.
Juntamente com Passport, vamos instalar
outro módulo relacionado Passport chamado Passport-Local.
Passport-Local suporta uma estratégia chamada como
a estratégia local para autenticar usuários
com a combinação padrão de senha de nome de usuário.
Então, configuramos o esquema do usuário,
como fizemos antes,
e então usamos o esquema ou modelo do usuário para rastrear o nome de usuário e
senha e, em seguida, Passport-Local depende disso para verificar o nome de usuário e senha.
Então, para instalá-lo novamente,
sendo um módulo Node,
nós o instalamos usando o procedimento padrão para instalar o módulo Passport-Local Node.
Uma vez que o módulo Passport-Local Node está instalado,
então precisamos especificar a estratégia local e como ele é realmente usado dentro Passport.
Então, para especificar uma estratégia local, vamos dizer;
passport.use, e assim isso nos permitirá especificar a estratégia local a ser usada.
Então, tendo instalado o Passport-Local,
vamos declarar uma nova estratégia local e, em seguida, fornecer
a função de verificação correspondente que é usada para verificar o usuário.
Se você estiver usando um MongoDB como a loja back-end, então,
para nos ajudar com a estratégia Passport-Local,
há um outro módulo chamado como Passport-Local Mangusto.
O módulo Passport-Local Mangusto fornece
um plugin Mongoose que simplificará o nome de usuário e senha login.
Ao instalar o plugin Passport-Local Mangusto e,
em seguida, usá-lo quando definimos o esquema do usuário e o modelo,
e, assim, usando o suporte do módulo Passport-Local Mangusto,
este plugin de mangusto adiciona no nome de usuário e
uma maneira criptografada de armazenar a senha dentro do nosso usuário modelo.
A criptografia é feita usando hash
na senha que usamos para registrar usuários,
e o hash em si usa um campo salt.
Então, se você sabe alguma coisa sobre criptografia, na criptografia,
o salt é uma string aleatória que é usada para executar
a operação de hash na senha para armazenamento.
Assim, a senha hash é em si mesmo armazenado em nosso banco de dados MongoDB.
A senha real não é armazenada.
Assim, quando o usuário tenta autenticar usando o nome de usuário e senha,
a senha será novamente colocada em hash e, em seguida,
comparada com as senhas com hash armazenadas em nosso banco de dados e isso é
tudo fornecido pelo plugin Mangusto, o Passaporte-Local.
Além disso, o Mangusto Passaporte-Local também adiciona métodos adicionais que
são muito úteis para configurar a estratégia Passport-Local.
Então, dentro da nossa aplicação quando definimos o esquema do usuário e o modelo,
vamos importar o Passport-Local Mangusto e,
em seguida, adicionar como o plugin para o esquema do usuário.
Este módulo Passport-Local Mangusto automaticamente
como eu disse adiciona o campo de nome de usuário e também
um campo de armazenamento de senha com hash usando um valor salt que ele usa para fazer o hash,
e também fornece métodos adicionais que nos
permitem configurar nossa estratégia Passport-Local.
Se estamos usando o módulo Passport-Local Mangusto,
em seguida, a estratégia local,
o plugin Passport-Local Mongoose suporta
no modelo de usuário um método de autenticação que irá automaticamente fazer a autenticação.
No slide anterior, eu tinha mostrado a vocês como poderíamos implementar a estratégia local.
Agora isso é fornecido automaticamente para você pelo Passport-Local Mangusto
simplesmente dizendo novo localstrategy user.authenticate.
Então não precisamos escrever explicitamente o código de autenticação para a estratégia local.
Além disso, se você estiver usando sessões que são suportadas pelo Passport
, então, para sessões de suporte,
as informações do usuário precisam ser serializadas para
serem armazenadas com as informações da sessão no lado do servidor e,
em seguida, quando a solicitação chega,
do ID da sessão,
as informações do usuário precisa ser desserializado para extrair
as informações do usuário de nossas informações de sessão que são armazenadas no lado do servidor.
Agora, esta
operação de serialização e desserialização já é suportada pelo Passport-Local Mangusto através
do usuário serializar e
os métodos de usuário desserializar que estão disponíveis no plugin Passport-Local Mangusto.
Então, tendo visto isso,
veremos agora no exercício como é fácil configurar a
estratégia local para autenticar usuários usando os
módulos Passport, Passport Local e Passport-Local Mongoose Node.