1
00:00:03,680 --> 00:00:08,435
Agora que entendemos sobre cookies e sessões expressas,

2
00:00:08,435 --> 00:00:11,895
neste exercício, vamos olhar para os cookies em particular.

3
00:00:11,895 --> 00:00:15,490
Vamos ver como podemos usar o middleware do analisador de cookies

4
00:00:15,490 --> 00:00:22,185
para configurar e manipular cookies dentro da nossa aplicação expressa.

5
00:00:22,185 --> 00:00:26,900
Voltando ao nosso aplicativo ConFusion Server Express

6
00:00:26,900 --> 00:00:28,695
que temos trabalhado até agora,

7
00:00:28,695 --> 00:00:32,420
você notará no topo que o analisador de cookies

8
00:00:32,420 --> 00:00:37,200
já está incluído em nossa aplicação expressa.

9
00:00:37,200 --> 00:00:40,150
Se você precisa instalar explicitamente o analisador de cookies,

10
00:00:40,150 --> 00:00:45,230
você só precisa digitar “npm install cookie-parser menos salvar”.

11
00:00:45,230 --> 00:00:48,740
Mas como o nosso Express Generator já incluiu

12
00:00:48,740 --> 00:00:52,810
o analisador de cookies em nossa aplicação expressa que andaimes,

13
00:00:52,810 --> 00:00:56,210
não precisamos fazer essa etapa neste exercício.

14
00:00:56,210 --> 00:00:59,430
Então, você vê que o analisador de cookies já está incluído lá,

15
00:00:59,430 --> 00:01:03,910
e então se você rolar para baixo,

16
00:01:03,910 --> 00:01:08,290
você veria que no código logo abaixo,

17
00:01:08,290 --> 00:01:13,925
você veria que o analisador de cookies já foi incluído no middleware lá.

18
00:01:13,925 --> 00:01:16,330
Agora, para este analisador de cookies,

19
00:01:16,330 --> 00:01:19,885
vamos usar cookies assinados neste exercício.

20
00:01:19,885 --> 00:01:21,680
Então, para este analisador de cookies,

21
00:01:21,680 --> 00:01:27,580
eu vou fornecer uma chave secreta como o parâmetro aqui.

22
00:01:27,580 --> 00:01:29,990
A chave secreta pode ser qualquer corda lá,

23
00:01:29,990 --> 00:01:37,450
então eu vou apenas fornecer uma corda como esta, eu vou dizer 12345-67890.

24
00:01:37,450 --> 00:01:39,915
Não precisa ser nada significativo,

25
00:01:39,915 --> 00:01:48,650
é apenas uma chave que pode ser usada pelo

26
00:01:48,650 --> 00:01:53,160
nosso analisador de cookies para criptografar

27
00:01:53,160 --> 00:01:59,560
as informações e assinar o cookie que é enviado do servidor para o cliente.

28
00:01:59,560 --> 00:02:05,775
Então, uma vez que configuramos nosso analisador de cookies para lidar com cookies assinados,

29
00:02:05,775 --> 00:02:08,805
então dentro da própria autorização, para que

30
00:02:08,805 --> 00:02:13,555
você veja que nós temos a autorização que nós construímos aqui.

31
00:02:13,555 --> 00:02:15,130
Agora, dentro da autorização,

32
00:02:15,130 --> 00:02:16,735
o que vamos fazer é,

33
00:02:16,735 --> 00:02:23,385
a primeira vez que o usuário tentar acessar o servidor,

34
00:02:23,385 --> 00:02:29,870
esperaremos que o usuário se autorize.

35
00:02:29,870 --> 00:02:37,360
Depois disso, vamos configurar o cookie no lado do cliente a partir do servidor e

36
00:02:37,360 --> 00:02:41,350
, em seguida, o cliente não tem que

37
00:02:41,350 --> 00:02:45,420
continuar explicitamente enviando as informações básicas de autenticação.

38
00:02:45,420 --> 00:02:53,335
Em vez disso, o cliente simplesmente precisará incluir o cookie na solicitação de saída.

39
00:02:53,335 --> 00:02:56,650
Uma vez que estamos usando cookies assinados aqui, então,

40
00:02:56,650 --> 00:03:01,010
quando a solicitação de entrada entra,

41
00:03:01,010 --> 00:03:04,490
então vamos lidar com isso dentro da autorização.

42
00:03:04,490 --> 00:03:08,885
Agora, você se lembra que já configuramos o middleware de autorização aqui.

43
00:03:08,885 --> 00:03:12,980
Então, vamos modificar este middleware de autorização para fazer uso de

44
00:03:12,980 --> 00:03:17,445
cookies em vez do cabeçalho de autorização.

45
00:03:17,445 --> 00:03:20,910
Então, o que vamos fazer aqui é que,

46
00:03:20,910 --> 00:03:24,710
vamos dizer “console.log” e então vamos,

47
00:03:30,340 --> 00:03:33,140
“console.log (Req.signedCookies)” para que vejamos o que realmente está

48
00:03:33,140 --> 00:03:35,790
incluído no cookie assinado aqui.

49
00:03:35,790 --> 00:03:38,070
Agora, também depois disso,

50
00:03:38,070 --> 00:03:46,275
o que vamos fazer é dizer, “Se (! req.signedCookies.User)”.

51
00:03:46,275 --> 00:03:51,635
Usuário será uma propriedade que vamos configurar

52
00:03:51,635 --> 00:03:54,440
no cookie assinado como você verá um

53
00:03:54,440 --> 00:03:57,520
pouco mais tarde como vamos configurar o cookie assinado.

54
00:03:57,520 --> 00:04:05,600
Então, se a solicitação de entrada não incluir o campo de usuário nos cookies assinados,

55
00:04:05,600 --> 00:04:09,640
e então isso significa que o usuário ainda não foi autorizado.

56
00:04:09,640 --> 00:04:11,990
Então, nesse caso,

57
00:04:11,990 --> 00:04:18,195
o que vamos fazer é esperar que o usuário se autentique.

58
00:04:18,195 --> 00:04:23,740
Então, vamos fazer toda essa parte aqui.

59
00:04:23,740 --> 00:04:27,890
Portanto, observe que já tínhamos feito isso

60
00:04:27,890 --> 00:04:32,105
antes, onde estávamos manipulando o cabeçalho de autenticação.

61
00:04:32,105 --> 00:04:34,630
Então vamos levar toda essa parte,

62
00:04:34,630 --> 00:04:41,805
todo o caminho até esse “outro” aqui e depois incluir isso aqui dentro.

63
00:04:41,805 --> 00:04:48,260
Então, essencialmente, o que estamos especificando aqui é que,

64
00:04:49,110 --> 00:04:51,750
deixe-me recuo.

65
00:04:51,750 --> 00:04:55,100
Como você vê, eu sou muito particular sobre o meu recuo

66
00:04:55,100 --> 00:04:59,005
porque isso mantém o código mais fácil de ler.

67
00:04:59,005 --> 00:05:00,740
Então, dentro deste se,

68
00:05:00,740 --> 00:05:04,990
então este é o ponto de fechamento do se deste aqui.

69
00:05:04,990 --> 00:05:11,600
Portanto, estamos dizendo que se o cookie assinado não contém a propriedade do usuário nele,

70
00:05:11,600 --> 00:05:17,960
então esperamos que o usuário autorize, incluindo o cabeçalho de autorização.

71
00:05:17,960 --> 00:05:20,090
Então vamos procurar o cabeçalho de autorização.

72
00:05:20,090 --> 00:05:22,760
Se o cabeçalho de autorização não estiver disponível,

73
00:05:22,760 --> 00:05:28,190
então nós simplesmente rejeitaremos o usuário e solicitaremos

74
00:05:28,190 --> 00:05:34,120
que o usuário insira o nome de usuário e a senha como fizemos no exercício anterior.

75
00:05:34,120 --> 00:05:36,600
Se o cabeçalho de autorização estiver incluído,

76
00:05:36,600 --> 00:05:41,165
então vamos processar o cabeçalho de autorização exatamente como fizemos antes,

77
00:05:41,165 --> 00:05:44,565
e se o usuário é um usuário autorizado,

78
00:05:44,565 --> 00:05:49,620
lembre-se que chamamos o próximo para permitir que o usuário prossiga.

79
00:05:49,620 --> 00:05:51,480
Agora, neste ponto,

80
00:05:51,480 --> 00:05:56,685
o que vamos fazer é que vamos dizer,

81
00:05:56,685 --> 00:06:00,380
vamos configurar o cookie neste ponto.

82
00:06:00,380 --> 00:06:04,725
Então é aqui que vamos usar o cookie res aqui.

83
00:06:04,725 --> 00:06:07,880
Observe que o cookie não existe,

84
00:06:07,880 --> 00:06:10,125
então diremos “res.cookie”.

85
00:06:10,125 --> 00:06:15,275
Como você pode ver, o próprio cookie res leva a primeira string de nome de valor, string de

86
00:06:15,275 --> 00:06:19,060
valor e opções, opções de cookie.

87
00:06:19,060 --> 00:06:25,820
Defina o nome do cookie como valor com as opções fornecidas e as opções são incluídas aqui,

88
00:06:25,820 --> 00:06:27,410
algumas opções para o cookie aqui.

89
00:06:27,410 --> 00:06:31,040
Vou simplesmente usar algumas das opções aqui.

90
00:06:31,040 --> 00:06:37,500
Então vamos dizer, “res.cookie” e então eu vou configurar o cookie com o nome usuário.

91
00:06:37,680 --> 00:06:41,890
Agora observe que esta é a razão pela qual eu estou

92
00:06:41,890 --> 00:06:45,400
verificando o req.signedCookies.User lá em cima.

93
00:06:45,400 --> 00:06:51,380
Então vamos dizer “res.cookie ('user',)” e

94
00:06:51,380 --> 00:06:56,290
o campo de usuário eu vou configurá-lo para 'admin' e

95
00:06:56,290 --> 00:07:01,390
então eu vou configurar isso para ser um cookie assinado.

96
00:07:01,390 --> 00:07:03,725
Então eu vou dizer “assinado: verdadeiro”.

97
00:07:03,725 --> 00:07:06,295
Então, o que significa que o meu analisador de cookies irá garantir

98
00:07:06,295 --> 00:07:10,120
que este cookie será assinado e configurado.

99
00:07:10,120 --> 00:07:14,290
Então esta é a opção que eu criei para o cookie res aqui.

100
00:07:14,290 --> 00:07:16,360
Portanto, isto incluirá

101
00:07:16,360 --> 00:07:22,300
este nome específico no cookie assinado com este valor específico.

102
00:07:22,300 --> 00:07:26,160
Então essa é a razão pela qual eu sou capaz de verificar esse valor aqui em cima.

103
00:07:26,160 --> 00:07:27,770
Então, se isso não existir,

104
00:07:27,770 --> 00:07:33,620
então é claro que eu espero que o usuário para autenticar usando a autenticação básica,

105
00:07:33,620 --> 00:07:36,045
e se a autenticação básica for bem-sucedida,

106
00:07:36,045 --> 00:07:40,190
então eu vou configurar o cookie aqui e configurar

107
00:07:40,190 --> 00:07:45,440
o campo cookie na mensagem de resposta de saída aqui e

108
00:07:45,440 --> 00:07:49,730
isso irá solicitar o para configurar o cookie no lado do cliente e, em seguida,

109
00:07:49,730 --> 00:07:55,055
todas as solicitações subsequentes incluirão este cookie na solicitação do cliente.

110
00:07:55,055 --> 00:08:02,085
Então é assim que eu estou lidando com o fato de que o cookie.user não existe.

111
00:08:02,085 --> 00:08:05,120
Ali. Se ele existir,

112
00:08:05,120 --> 00:08:07,765
então a outra parte, de

113
00:08:07,765 --> 00:08:11,155
modo que isso significa que o cookie assinado já

114
00:08:11,155 --> 00:08:16,415
existe e a propriedade do usuário é definida nisso,

115
00:08:16,415 --> 00:08:18,255
então, no outro,

116
00:08:18,255 --> 00:08:19,810
o que vou verificar é

117
00:08:19,810 --> 00:08:33,150
se Req.signedCookies.User é admin.

118
00:08:33,150 --> 00:08:37,380
Em seguida, isso significa que o cookie assinado contém as informações corretas.

119
00:08:37,380 --> 00:08:39,780
Então, vou dizer o próximo.

120
00:08:39,780 --> 00:08:44,800
Então, o que significa que você permitirá que o pedido passe.

121
00:08:46,520 --> 00:08:55,250
Caso contrário, este cookie não é válido porque não contém este valor correto.

122
00:08:55,250 --> 00:08:57,635
Então isso significa que isso é um erro.

123
00:08:57,635 --> 00:08:59,749
Então, neste caso,

124
00:08:59,749 --> 00:09:02,750
diremos que você não está autenticado,

125
00:09:02,750 --> 00:09:12,075
e então nós simplesmente causaremos o erro neste ponto.

126
00:09:12,075 --> 00:09:15,640
Agora, não vamos pedir ao usuário para

127
00:09:15,640 --> 00:09:18,585
a sessão porque isso deve ter sido feito anteriormente.

128
00:09:18,585 --> 00:09:20,870
Agora, normalmente, isso não aconteceria

129
00:09:20,870 --> 00:09:24,470
porque se o cookie já estiver definido no lado do cliente,

130
00:09:24,470 --> 00:09:27,005
então ele deve incluir o valor correto de qualquer maneira.

131
00:09:27,005 --> 00:09:29,850
Mas por uma questão de completude,

132
00:09:29,850 --> 00:09:35,315
eu também incluí a verificação de erro mais aqui neste ponto. É isso.

133
00:09:35,315 --> 00:09:38,210
Com esta configuração, transformamos

134
00:09:38,210 --> 00:09:43,710
nossa aplicação expressa em uma que lida com cookies aqui.

135
00:09:43,710 --> 00:09:48,405
Novamente, deixe-me chamar sua atenção para o que estamos fazendo aqui mais uma vez.

136
00:09:48,405 --> 00:09:50,060
Aqui, estamos verificando se

137
00:09:50,060 --> 00:09:54,970
a propriedade do usuário nos cookies assinados não existe,

138
00:09:54,970 --> 00:09:57,380
ou mesmo o cookie assinado em si não existe.

139
00:09:57,380 --> 00:10:02,595
Em seguida, esperamos que a autorização básica seja feita.

140
00:10:02,595 --> 00:10:04,850
Se a autorização for bem-sucedida,

141
00:10:04,850 --> 00:10:09,860
então eu vou configurar o cookie usando o res.cookie aqui.

142
00:10:09,860 --> 00:10:14,035
Em seguida, todas as solicitações subseqüentes carregarão o cookie assinado de qualquer maneira,

143
00:10:14,035 --> 00:10:17,080
e então eu vou verificar para ver se o cookie assinado é

144
00:10:17,080 --> 00:10:22,905
um cookie assinado válido e contém a propriedade do usuário que é definida igual a admin.

145
00:10:22,905 --> 00:10:25,680
Se isso acontecer, então este é um acesso autorizado,

146
00:10:25,680 --> 00:10:27,935
então ele permitirá avançar.

147
00:10:27,935 --> 00:10:31,920
Se não, então eu levanto um erro neste momento.

148
00:10:31,920 --> 00:10:39,710
Correção menor, as novas versões do Node.js esperam que você use isso como

149
00:10:39,710 --> 00:10:47,500
novo buffer. From em vez de novo buffer para lidar com alguns problemas de segurança.

150
00:10:47,500 --> 00:10:53,165
Portanto, basta corrigir esta linha para o novo buffer. From. É isso.

151
00:10:53,165 --> 00:10:59,600
Vamos salvar as alterações e, em seguida, ir e olhar para a nossa aplicação naquele Carteiro.

152
00:10:59,600 --> 00:11:03,310
Se o servidor anterior estiver em execução,

153
00:11:03,310 --> 00:11:06,155
basta pará-lo digitando Control C

154
00:11:06,155 --> 00:11:09,665
e, em seguida, reinicie o servidor dizendo npm start.

155
00:11:09,665 --> 00:11:13,305
Claro, certifique-se de que seu servidor MongoDB está funcionando.

156
00:11:13,305 --> 00:11:17,140
Caso contrário, seu servidor express não iniciará corretamente.

157
00:11:17,140 --> 00:11:19,955
Então, uma vez que seu servidor expresso é iniciado,

158
00:11:19,955 --> 00:11:26,250
então vamos para o nosso Postman e tentar se conectar ao servidor.

159
00:11:26,250 --> 00:11:30,970
E vou demonstrar alguns aspectos sobre como os cookies são tratados.

160
00:11:30,970 --> 00:11:32,939
Agora, indo para o Carteiro,

161
00:11:32,939 --> 00:11:35,980
deixe-me limpar toda essa informação

162
00:11:35,980 --> 00:11:40,745
do meu Carteiro e então começaremos com o básico.

163
00:11:40,745 --> 00:11:44,265
Então deixe-me tentar acessar o localhost: 3000/pratos.

164
00:11:44,265 --> 00:11:47,335
Agora, depois de ter limpado tudo,

165
00:11:47,335 --> 00:11:49,460
vou enviar o pedido e salvar.

166
00:11:49,460 --> 00:11:51,150
E assim, do lado do servidor,

167
00:11:51,150 --> 00:11:53,600
ele diz que você não está autenticado.

168
00:11:53,600 --> 00:11:55,365
Então, quando você olha para o cabeçalho,

169
00:11:55,365 --> 00:12:00,350
isso está me pedindo para autenticar usando o WWW-Authenticate.

170
00:12:00,350 --> 00:12:05,115
Então agora, deixe-me ir para a autorização e, em seguida, configurar a autorização básica,

171
00:12:05,115 --> 00:12:08,415
e então eu vou configurar a autorização como admin

172
00:12:08,415 --> 00:12:14,200
e, em seguida, senha e, em seguida, atualizar a solicitação para que o cabeçalho

173
00:12:14,200 --> 00:12:20,090
irá agora conter o cabeçalho de autorização aqui com as informações lá.

174
00:12:20,090 --> 00:12:23,900
E então deixe-me enviar o pedido Git sobre esta parte.

175
00:12:23,900 --> 00:12:25,805
Se eu enviar a solicitação Git,

176
00:12:25,805 --> 00:12:34,205
em seguida, em resposta, você verá que a solicitação Git foi bem-sucedida.

177
00:12:34,205 --> 00:12:38,300
Observe também mais algumas coisas.

178
00:12:38,300 --> 00:12:41,060
Você verá que o status é 200 OK.

179
00:12:41,060 --> 00:12:50,805
Observe também que um cookie foi configurado no lado do nosso cliente dentro do Postman aqui.

180
00:12:50,805 --> 00:12:53,120
Este cookie contém informações.

181
00:12:53,120 --> 00:12:55,420
Vamos ver os detalhes do biscoito em um minuto.

182
00:12:55,420 --> 00:12:57,265
Em seguida, quando você olha para o cabeçalho,

183
00:12:57,265 --> 00:13:03,130
você vê no cabeçalho este valor aqui dizendo Set-Cookie,

184
00:13:03,130 --> 00:13:06,165
e, em seguida, esta informação que vem aqui.

185
00:13:06,165 --> 00:13:10,290
Agora, se você olhar para ele cuidadosamente,

186
00:13:10,290 --> 00:13:13,965
você verá algo aqui diz usuário igual a,

187
00:13:13,965 --> 00:13:18,000
e então você vê este valor aqui, admin lá.

188
00:13:18,000 --> 00:13:23,845
Então, você percebe que algo foi fechado dentro do cookie.

189
00:13:23,845 --> 00:13:26,465
Se você quiser realmente examinar o cookie,

190
00:13:26,465 --> 00:13:30,355
vá até aqui no Postman e clique nessas chaves,

191
00:13:30,355 --> 00:13:37,205
e então isso mostrará todos os cookies que foram configurados neste lado do cliente.

192
00:13:37,205 --> 00:13:43,365
Então, em particular, deixe-me limpar todos esses outros cookies.

193
00:13:43,365 --> 00:13:48,640
Eu provavelmente usei alguns destes por algum outro motivo.

194
00:13:48,640 --> 00:13:51,290
Então deixe-me limpar os biscoitos.

195
00:13:51,290 --> 00:13:53,020
De qualquer forma, se os

196
00:13:53,020 --> 00:13:54,355
vires, podes deixá-los lá.

197
00:13:54,355 --> 00:13:56,385
Não é um grande problema.

198
00:13:56,385 --> 00:14:00,220
Concentre-se especificamente no host local aqui,

199
00:14:00,220 --> 00:14:02,620
e então você vê este cookie aqui.

200
00:14:02,620 --> 00:14:03,780
Basta clicar no cookie

201
00:14:03,780 --> 00:14:08,710
e, em seguida, você vê o valor real dentro do cookie que é armazenado lá.

202
00:14:08,710 --> 00:14:12,130
Em seguida, também a data de expiração para essa configuração de cookie aqui.

203
00:14:12,130 --> 00:14:15,460
Agora, esse valor será exatamente o que você viu

204
00:14:15,460 --> 00:14:18,890
no cookie conjunto que veio do lado do servidor.

205
00:14:18,890 --> 00:14:24,620
Agora, isso também significa que em solicitações subseqüentes que entram,

206
00:14:24,620 --> 00:14:27,365
então mesmo se eu limpar minha autorização,

207
00:14:27,365 --> 00:14:31,010
e mesmo se eu remover o cabeçalho de autorização,

208
00:14:31,150 --> 00:14:34,225
porque o cookie foi configurado,

209
00:14:34,225 --> 00:14:37,110
este cookie foi configurado no meu host local,

210
00:14:37,110 --> 00:14:44,335
cada solicitação subsequente vai para este servidor incluirá este cookie.

211
00:14:44,335 --> 00:14:51,000
Então, mesmo que eu não teria os cabeçalhos configurados lá,

212
00:14:51,000 --> 00:14:52,285
se eu enviar a solicitação,

213
00:14:52,285 --> 00:14:57,940
você vai notar que o pedido Git funciona exatamente como antes sem qualquer problema,

214
00:14:57,940 --> 00:15:02,195
por causa do fato de que cada solicitação de saída irá automaticamente incluir

215
00:15:02,195 --> 00:15:08,075
este cookie na solicitação de saída do meu Postman Aqui.

216
00:15:08,075 --> 00:15:13,850
Isso demonstra o uso de cookies em nossa aplicação.

217
00:15:13,850 --> 00:15:18,260
Com isso, vimos como os cookies podem ser

218
00:15:18,260 --> 00:15:22,404
configurados e processados em nosso servidor expresso usando o analisador de cookies,

219
00:15:22,404 --> 00:15:25,330
e como podemos configurar cookies assinados.

220
00:15:25,330 --> 00:15:31,390
Este é um bom momento para você fazer um git commit com os cookies de mensagem.