Agora que entendemos sobre cookies e sessões expressas,
neste exercício, vamos olhar para os cookies em particular.
Vamos ver como podemos usar o middleware do analisador de cookies
para configurar e manipular cookies dentro da nossa aplicação expressa.
Voltando ao nosso aplicativo ConFusion Server Express
que temos trabalhado até agora,
você notará no topo que o analisador de cookies
já está incluído em nossa aplicação expressa.
Se você precisa instalar explicitamente o analisador de cookies,
você só precisa digitar “npm install cookie-parser menos salvar”.
Mas como o nosso Express Generator já incluiu
o analisador de cookies em nossa aplicação expressa que andaimes,
não precisamos fazer essa etapa neste exercício.
Então, você vê que o analisador de cookies já está incluído lá,
e então se você rolar para baixo,
você veria que no código logo abaixo,
você veria que o analisador de cookies já foi incluído no middleware lá.
Agora, para este analisador de cookies,
vamos usar cookies assinados neste exercício.
Então, para este analisador de cookies,
eu vou fornecer uma chave secreta como o parâmetro aqui.
A chave secreta pode ser qualquer corda lá,
então eu vou apenas fornecer uma corda como esta, eu vou dizer 12345-67890.
Não precisa ser nada significativo,
é apenas uma chave que pode ser usada pelo
nosso analisador de cookies para criptografar
as informações e assinar o cookie que é enviado do servidor para o cliente.
Então, uma vez que configuramos nosso analisador de cookies para lidar com cookies assinados,
então dentro da própria autorização, para que
você veja que nós temos a autorização que nós construímos aqui.
Agora, dentro da autorização,
o que vamos fazer é,
a primeira vez que o usuário tentar acessar o servidor,
esperaremos que o usuário se autorize.
Depois disso, vamos configurar o cookie no lado do cliente a partir do servidor e
, em seguida, o cliente não tem que
continuar explicitamente enviando as informações básicas de autenticação.
Em vez disso, o cliente simplesmente precisará incluir o cookie na solicitação de saída.
Uma vez que estamos usando cookies assinados aqui, então,
quando a solicitação de entrada entra,
então vamos lidar com isso dentro da autorização.
Agora, você se lembra que já configuramos o middleware de autorização aqui.
Então, vamos modificar este middleware de autorização para fazer uso de
cookies em vez do cabeçalho de autorização.
Então, o que vamos fazer aqui é que,
vamos dizer “console.log” e então vamos,
“console.log (Req.signedCookies)” para que vejamos o que realmente está
incluído no cookie assinado aqui.
Agora, também depois disso,
o que vamos fazer é dizer, “Se (! req.signedCookies.User)”.
Usuário será uma propriedade que vamos configurar
no cookie assinado como você verá um
pouco mais tarde como vamos configurar o cookie assinado.
Então, se a solicitação de entrada não incluir o campo de usuário nos cookies assinados,
e então isso significa que o usuário ainda não foi autorizado.
Então, nesse caso,
o que vamos fazer é esperar que o usuário se autentique.
Então, vamos fazer toda essa parte aqui.
Portanto, observe que já tínhamos feito isso
antes, onde estávamos manipulando o cabeçalho de autenticação.
Então vamos levar toda essa parte,
todo o caminho até esse “outro” aqui e depois incluir isso aqui dentro.
Então, essencialmente, o que estamos especificando aqui é que,
deixe-me recuo.
Como você vê, eu sou muito particular sobre o meu recuo
porque isso mantém o código mais fácil de ler.
Então, dentro deste se,
então este é o ponto de fechamento do se deste aqui.
Portanto, estamos dizendo que se o cookie assinado não contém a propriedade do usuário nele,
então esperamos que o usuário autorize, incluindo o cabeçalho de autorização.
Então vamos procurar o cabeçalho de autorização.
Se o cabeçalho de autorização não estiver disponível,
então nós simplesmente rejeitaremos o usuário e solicitaremos
que o usuário insira o nome de usuário e a senha como fizemos no exercício anterior.
Se o cabeçalho de autorização estiver incluído,
então vamos processar o cabeçalho de autorização exatamente como fizemos antes,
e se o usuário é um usuário autorizado,
lembre-se que chamamos o próximo para permitir que o usuário prossiga.
Agora, neste ponto,
o que vamos fazer é que vamos dizer,
vamos configurar o cookie neste ponto.
Então é aqui que vamos usar o cookie res aqui.
Observe que o cookie não existe,
então diremos “res.cookie”.
Como você pode ver, o próprio cookie res leva a primeira string de nome de valor, string de
valor e opções, opções de cookie.
Defina o nome do cookie como valor com as opções fornecidas e as opções são incluídas aqui,
algumas opções para o cookie aqui.
Vou simplesmente usar algumas das opções aqui.
Então vamos dizer, “res.cookie” e então eu vou configurar o cookie com o nome usuário.
Agora observe que esta é a razão pela qual eu estou
verificando o req.signedCookies.User lá em cima.
Então vamos dizer “res.cookie ('user',)” e
o campo de usuário eu vou configurá-lo para 'admin' e
então eu vou configurar isso para ser um cookie assinado.
Então eu vou dizer “assinado: verdadeiro”.
Então, o que significa que o meu analisador de cookies irá garantir
que este cookie será assinado e configurado.
Então esta é a opção que eu criei para o cookie res aqui.
Portanto, isto incluirá
este nome específico no cookie assinado com este valor específico.
Então essa é a razão pela qual eu sou capaz de verificar esse valor aqui em cima.
Então, se isso não existir,
então é claro que eu espero que o usuário para autenticar usando a autenticação básica,
e se a autenticação básica for bem-sucedida,
então eu vou configurar o cookie aqui e configurar
o campo cookie na mensagem de resposta de saída aqui e
isso irá solicitar o para configurar o cookie no lado do cliente e, em seguida,
todas as solicitações subsequentes incluirão este cookie na solicitação do cliente.
Então é assim que eu estou lidando com o fato de que o cookie.user não existe.
Ali. Se ele existir,
então a outra parte, de
modo que isso significa que o cookie assinado já
existe e a propriedade do usuário é definida nisso,
então, no outro,
o que vou verificar é
se Req.signedCookies.User é admin.
Em seguida, isso significa que o cookie assinado contém as informações corretas.
Então, vou dizer o próximo.
Então, o que significa que você permitirá que o pedido passe.
Caso contrário, este cookie não é válido porque não contém este valor correto.
Então isso significa que isso é um erro.
Então, neste caso,
diremos que você não está autenticado,
e então nós simplesmente causaremos o erro neste ponto.
Agora, não vamos pedir ao usuário para
a sessão porque isso deve ter sido feito anteriormente.
Agora, normalmente, isso não aconteceria
porque se o cookie já estiver definido no lado do cliente,
então ele deve incluir o valor correto de qualquer maneira.
Mas por uma questão de completude,
eu também incluí a verificação de erro mais aqui neste ponto. É isso.
Com esta configuração, transformamos
nossa aplicação expressa em uma que lida com cookies aqui.
Novamente, deixe-me chamar sua atenção para o que estamos fazendo aqui mais uma vez.
Aqui, estamos verificando se
a propriedade do usuário nos cookies assinados não existe,
ou mesmo o cookie assinado em si não existe.
Em seguida, esperamos que a autorização básica seja feita.
Se a autorização for bem-sucedida,
então eu vou configurar o cookie usando o res.cookie aqui.
Em seguida, todas as solicitações subseqüentes carregarão o cookie assinado de qualquer maneira,
e então eu vou verificar para ver se o cookie assinado é
um cookie assinado válido e contém a propriedade do usuário que é definida igual a admin.
Se isso acontecer, então este é um acesso autorizado,
então ele permitirá avançar.
Se não, então eu levanto um erro neste momento.
Correção menor, as novas versões do Node.js esperam que você use isso como
novo buffer. From em vez de novo buffer para lidar com alguns problemas de segurança.
Portanto, basta corrigir esta linha para o novo buffer. From. É isso.
Vamos salvar as alterações e, em seguida, ir e olhar para a nossa aplicação naquele Carteiro.
Se o servidor anterior estiver em execução,
basta pará-lo digitando Control C
e, em seguida, reinicie o servidor dizendo npm start.
Claro, certifique-se de que seu servidor MongoDB está funcionando.
Caso contrário, seu servidor express não iniciará corretamente.
Então, uma vez que seu servidor expresso é iniciado,
então vamos para o nosso Postman e tentar se conectar ao servidor.
E vou demonstrar alguns aspectos sobre como os cookies são tratados.
Agora, indo para o Carteiro,
deixe-me limpar toda essa informação
do meu Carteiro e então começaremos com o básico.
Então deixe-me tentar acessar o localhost: 3000/pratos.
Agora, depois de ter limpado tudo,
vou enviar o pedido e salvar.
E assim, do lado do servidor,
ele diz que você não está autenticado.
Então, quando você olha para o cabeçalho,
isso está me pedindo para autenticar usando o WWW-Authenticate.
Então agora, deixe-me ir para a autorização e, em seguida, configurar a autorização básica,
e então eu vou configurar a autorização como admin
e, em seguida, senha e, em seguida, atualizar a solicitação para que o cabeçalho
irá agora conter o cabeçalho de autorização aqui com as informações lá.
E então deixe-me enviar o pedido Git sobre esta parte.
Se eu enviar a solicitação Git,
em seguida, em resposta, você verá que a solicitação Git foi bem-sucedida.
Observe também mais algumas coisas.
Você verá que o status é 200 OK.
Observe também que um cookie foi configurado no lado do nosso cliente dentro do Postman aqui.
Este cookie contém informações.
Vamos ver os detalhes do biscoito em um minuto.
Em seguida, quando você olha para o cabeçalho,
você vê no cabeçalho este valor aqui dizendo Set-Cookie,
e, em seguida, esta informação que vem aqui.
Agora, se você olhar para ele cuidadosamente,
você verá algo aqui diz usuário igual a,
e então você vê este valor aqui, admin lá.
Então, você percebe que algo foi fechado dentro do cookie.
Se você quiser realmente examinar o cookie,
vá até aqui no Postman e clique nessas chaves,
e então isso mostrará todos os cookies que foram configurados neste lado do cliente.
Então, em particular, deixe-me limpar todos esses outros cookies.
Eu provavelmente usei alguns destes por algum outro motivo.
Então deixe-me limpar os biscoitos.
De qualquer forma, se os
vires, podes deixá-los lá.
Não é um grande problema.
Concentre-se especificamente no host local aqui,
e então você vê este cookie aqui.
Basta clicar no cookie
e, em seguida, você vê o valor real dentro do cookie que é armazenado lá.
Em seguida, também a data de expiração para essa configuração de cookie aqui.
Agora, esse valor será exatamente o que você viu
no cookie conjunto que veio do lado do servidor.
Agora, isso também significa que em solicitações subseqüentes que entram,
então mesmo se eu limpar minha autorização,
e mesmo se eu remover o cabeçalho de autorização,
porque o cookie foi configurado,
este cookie foi configurado no meu host local,
cada solicitação subsequente vai para este servidor incluirá este cookie.
Então, mesmo que eu não teria os cabeçalhos configurados lá,
se eu enviar a solicitação,
você vai notar que o pedido Git funciona exatamente como antes sem qualquer problema,
por causa do fato de que cada solicitação de saída irá automaticamente incluir
este cookie na solicitação de saída do meu Postman Aqui.
Isso demonstra o uso de cookies em nossa aplicação.
Com isso, vimos como os cookies podem ser
configurados e processados em nosso servidor expresso usando o analisador de cookies,
e como podemos configurar cookies assinados.
Este é um bom momento para você fazer um git commit com os cookies de mensagem.