﻿1
00:00:01,160 --> 00:00:03,130
‫-: Então, anteriormente, já implementamos

2
00:00:03,130 --> 00:00:05,420
‫uma funcionalidade de inscrição simples, mas nesta

3
00:00:05,420 --> 00:00:06,490
‫aula, na

4
00:00:06,490 --> 00:00:08,760
‫verdade, também faremos o login do

5
00:00:08,760 --> 00:00:11,700
‫usuário para fazer um processo de inscrição mais real.

6
00:00:11,700 --> 00:00:13,830
‫Então, começando com esta palestra,

7
00:00:13,830 --> 00:00:16,760
‫vamos realmente começar a implementar nossa autenticação,

8
00:00:16,760 --> 00:00:19,683
‫e é aí que fica realmente sério.

9
00:00:21,230 --> 00:00:23,210
‫Portanto, antes de começarmos, quero dar

10
00:00:23,210 --> 00:00:25,150
‫a vocês um aviso aqui,

11
00:00:25,150 --> 00:00:28,740
‫então a autenticação é muito difícil de acertar e muitos

12
00:00:28,740 --> 00:00:31,330
‫tutoriais por aí que você encontrará quando

13
00:00:31,330 --> 00:00:32,970
‫pesquisar por autenticação com

14
00:00:32,970 --> 00:00:35,492
‫o Node semelhante. js e

15
00:00:35,492 --> 00:00:38,480
‫Express, muitos deles cometem muitos erros graves e

16
00:00:38,480 --> 00:00:42,220
‫simplificam demais as coisas que não deveriam ser simplificadas.

17
00:00:42,220 --> 00:00:45,270
‫Tudo bem, isso não quer dizer que todos os

18
00:00:45,270 --> 00:00:46,740
‫tutoriais por

19
00:00:46,740 --> 00:00:48,500
‫aí são ruins, tudo bem,

20
00:00:48,500 --> 00:00:52,400
‫ou que são inúteis ou algo assim, mas eu realmente gasto semanas

21
00:00:52,400 --> 00:00:54,670
‫pesquisando todas as melhores práticas e refinando

22
00:00:54,670 --> 00:00:56,410
‫e melhorando meu código, para

23
00:00:56,410 --> 00:00:59,550
‫fazer essa seção de autenticação que nós vamos começar

24
00:00:59,550 --> 00:01:02,000
‫a implementar agora da melhor forma possível,

25
00:01:02,000 --> 00:01:05,228
‫para um iniciante como você, tudo bem, e isso é

26
00:01:05,228 --> 00:01:08,950
‫porque precisamos ser realmente muito cuidadosos ao escrever esta parte do

27
00:01:08,950 --> 00:01:12,730
‫aplicativo, porque lembre-se, os dados do nosso usuário estão em jogo

28
00:01:12,730 --> 00:01:15,650
‫aqui , e a confiança na empresa que

29
00:01:15,650 --> 00:01:17,200
‫executa o aplicativo também

30
00:01:17,200 --> 00:01:19,080
‫está em jogo e, portanto,

31
00:01:19,080 --> 00:01:21,200
‫implementar a autenticação é uma responsabilidade

32
00:01:21,200 --> 00:01:24,360
‫real, na qual você não deve cometer nenhum erro.

33
00:01:24,360 --> 00:01:25,980
‫Agora existem algumas bibliotecas

34
00:01:25,980 --> 00:01:28,470
‫por aí que podem nos ajudar a

35
00:01:28,470 --> 00:01:31,360
‫implementar autenticação e autorização e a mais conhecida

36
00:01:31,360 --> 00:01:33,130
‫se chama Passport, mas mesmo

37
00:01:33,130 --> 00:01:34,740
‫uma biblioteca como

38
00:01:34,740 --> 00:01:37,470
‫essa não tira todo o trabalho e toda

39
00:01:37,470 --> 00:01:39,510
‫a responsabilidade de você, tudo bem.

40
00:01:39,510 --> 00:01:40,630
‫Agora, neste

41
00:01:40,630 --> 00:01:42,810
‫caso aqui, vamos implementar toda a

42
00:01:42,810 --> 00:01:46,380
‫lógica de proteção e autorização de login por conta própria,

43
00:01:46,380 --> 00:01:49,910
‫exceto, é claro, para a implementação do token da web

44
00:01:49,910 --> 00:01:52,310
‫Jason de que falamos no último vídeo.

45
00:01:52,310 --> 00:01:54,820
‫Ok, então toda a assinatura e verificação

46
00:01:54,820 --> 00:01:58,170
‫de todas essas coisas, vamos deixar para a biblioteca

47
00:01:58,170 --> 00:02:00,450
‫WJT, mas então o resto,

48
00:02:00,450 --> 00:02:02,920
‫vamos nos implementar nas próximas aulas.

49
00:02:02,920 --> 00:02:04,430
‫Agora, como mencionei antes,

50
00:02:04,430 --> 00:02:07,830
‫já temos nossa função de inscrição aqui, certo, mas agora, tudo

51
00:02:07,830 --> 00:02:09,240
‫o que ela

52
00:02:09,240 --> 00:02:11,500
‫faz é simplesmente criar um novo usuário

53
00:02:11,500 --> 00:02:14,010
‫e, em seguida, enviá-lo de volta ao cliente.

54
00:02:14,010 --> 00:02:17,410
‫Pouco depois de terminar de gravar este curso,

55
00:02:17,410 --> 00:02:18,640
‫percebi

56
00:02:18,640 --> 00:02:21,239
‫que há uma falha de segurança

57
00:02:21,239 --> 00:02:23,920
‫muito séria nessa forma de inscrever

58
00:02:23,920 --> 00:02:26,630
‫usuários. Basicamente, o problema é que,

59
00:02:26,630 --> 00:02:30,640
‫agora, criamos um novo usuário usando todos os dados que

60
00:02:30,640 --> 00:02:32,850
‫chegam com o corpo certo,

61
00:02:32,850 --> 00:02:36,350
‫e então o problema aqui é que assim,

62
00:02:36,350 --> 00:02:40,960
‫qualquer um pode especificar a função como um direito de administrador,

63
00:02:40,960 --> 00:02:45,360
‫então basicamente, todos podem simplesmente se registrar como um administrador em

64
00:02:45,360 --> 00:02:46,670
‫nosso aplicativo e,

65
00:02:46,670 --> 00:02:49,620
‫portanto, é claro que não precisamos disso.

66
00:02:49,620 --> 00:02:53,090
‫Portanto, novamente, essa é uma falha de segurança

67
00:02:53,090 --> 00:02:55,860
‫séria e é claro que precisaremos consertar

68
00:02:55,860 --> 00:02:58,420
‫e consertar é bastante simples.

69
00:02:58,420 --> 00:03:01,150
‫Então, o que você precisa em vez desta linha

70
00:03:01,150 --> 00:03:02,670
‫de código, que está selecionada

71
00:03:02,670 --> 00:03:06,370
‫aqui, é este trecho de código que acabei de colocar aqui na tela.

72
00:03:06,370 --> 00:03:07,460
‫OK.

73
00:03:07,460 --> 00:03:10,900
‫Então, novamente, vá em frente e exclua esta linha de

74
00:03:10,900 --> 00:03:12,720
‫código que está selecionada aqui

75
00:03:12,720 --> 00:03:15,320
‫e substitua-a pelo código que acabei de colocar

76
00:03:15,320 --> 00:03:16,690
‫aqui na tela.

77
00:03:16,690 --> 00:03:19,070
‫Qual é a grande diferença aqui,

78
00:03:19,070 --> 00:03:21,010
‫bem, com esse novo

79
00:03:21,010 --> 00:03:24,580
‫código, basicamente permitimos que apenas os dados de que

80
00:03:24,580 --> 00:03:26,550
‫realmente precisamos sejam colocados no

81
00:03:26,550 --> 00:03:30,370
‫novo usuário, apenas um nome, o e-mail e as senhas.

82
00:03:30,370 --> 00:03:34,370
‫E agora, mesmo se um usuário tentar inserir manualmente uma função,

83
00:03:34,370 --> 00:03:37,030
‫não armazenaremos isso no novo usuário, e

84
00:03:37,030 --> 00:03:38,750
‫o mesmo para outras

85
00:03:38,750 --> 00:03:41,170
‫coisas, como por exemplo, uma foto.

86
00:03:41,170 --> 00:03:45,120
‫Portanto, esta é a solução rápida e fácil para esse problema.

87
00:03:45,120 --> 00:03:45,983
‫Agora,

88
00:03:45,983 --> 00:03:49,890
‫o que isso fará é que não podemos mais nos registrar

89
00:03:49,890 --> 00:03:52,570
‫como um administrador e, portanto, se precisarmos

90
00:03:52,570 --> 00:03:53,680
‫adicionar um novo

91
00:03:53,680 --> 00:03:57,030
‫administrador ao nosso sistema, podemos simplesmente criar um novo

92
00:03:57,030 --> 00:03:59,610
‫usuário normalmente e ir para o

93
00:03:59,610 --> 00:04:02,440
‫MongoDB Compass, e basicamente editar essa função lá.

94
00:04:02,440 --> 00:04:03,930
‫Então, edite manualmente

95
00:04:03,930 --> 00:04:06,470
‫do usuário para o administrador, ok.

96
00:04:06,470 --> 00:04:09,070
‫Claro que também poderíamos definir uma rota

97
00:04:09,070 --> 00:04:10,910
‫especial apenas para criar

98
00:04:10,910 --> 00:04:13,610
‫administradores, mas isso seria um pouco demais.

99
00:04:13,610 --> 00:04:16,210
‫Ok, então vamos em frente.

100
00:04:16,210 --> 00:04:18,820
‫Observe que o código no resto do

101
00:04:18,820 --> 00:04:20,790
‫vídeo e todos os vídeos

102
00:04:20,790 --> 00:04:25,090
‫neste curso ainda será a versão errada antiga, certo, mas na verdade

103
00:04:25,090 --> 00:04:27,270
‫no código final que está no

104
00:04:27,270 --> 00:04:29,240
‫repositório GitHub, eu já

105
00:04:29,240 --> 00:04:32,773
‫consertei isso e nós tem o código correto lá.

106
00:04:33,610 --> 00:04:37,770
‫De qualquer forma, geralmente quando nos inscrevemos em qualquer aplicativo da

107
00:04:37,770 --> 00:04:41,060
‫web, você também se loga automaticamente, certo, e vamos

108
00:04:41,060 --> 00:04:43,500
‫implementar isso muito rapidamente aqui.

109
00:04:43,500 --> 00:04:45,350
‫Então, faça o login do

110
00:04:45,350 --> 00:04:48,120
‫novo usuário, assim que ele se inscreveu, ok,

111
00:04:48,120 --> 00:04:50,090
‫e lembre-se da aula anterior, como

112
00:04:50,090 --> 00:04:51,680
‫isso funciona, tudo o que

113
00:04:51,680 --> 00:04:53,440
‫realmente precisamos fazer é assinar

114
00:04:53,440 --> 00:04:55,350
‫um token da web do Jason

115
00:04:55,350 --> 00:04:58,490
‫e enviá-lo de volta para o usuário , ok, mas

116
00:04:58,490 --> 00:05:01,270
‫agora vamos primeiro instalar o pacote MPM que usaremos

117
00:05:01,270 --> 00:05:03,350
‫para tudo relacionado aos tokens da

118
00:05:03,350 --> 00:05:04,893
‫web do Jason.

119
00:05:06,160 --> 00:05:08,180
‫Então, em nosso outro terminal,

120
00:05:08,180 --> 00:05:12,660
‫digamos que o MPM install, Jason web token, tudo isso junto assim

121
00:05:12,660 --> 00:05:14,370
‫e aquilo deve então

122
00:05:16,240 --> 00:05:18,630
‫instalar este pacote e vamos em

123
00:05:18,630 --> 00:05:19,790
‫frente e

124
00:05:19,790 --> 00:05:22,211
‫dar uma olhada nele no GitHub,

125
00:05:22,211 --> 00:05:23,950
‫apenas para ver a documentação

126
00:05:28,000 --> 00:05:29,380
‫e vamos faça

127
00:05:29,380 --> 00:05:31,830
‫isso aqui, não precisamos mais deste aqui,

128
00:05:33,370 --> 00:05:38,370
‫pelo menos por enquanto, e isso nos levará à página sobre MPM, e

129
00:05:38,810 --> 00:05:40,300
‫você verá o quão

130
00:05:40,300 --> 00:05:42,170
‫popular esse pacote realmente é,

131
00:05:42,170 --> 00:05:45,100
‫então temos 2. 3 milhões de downloads

132
00:05:45,100 --> 00:05:47,930
‫semanais, o que é realmente uma tonelada de downloads

133
00:05:47,930 --> 00:05:50,730
‫e podemos dar uma olhada na documentação aqui

134
00:05:50,730 --> 00:05:53,540
‫também, mas eu pessoalmente prefiro fazer isso no GitHub.

135
00:05:53,540 --> 00:05:56,090
‫Acho que parece muito mais limpo

136
00:05:56,090 --> 00:05:58,240
‫aqui, e estou tão acostumado

137
00:05:58,240 --> 00:06:02,410
‫com isso neste momento, então geralmente só vejo aqui, ok.

138
00:06:02,410 --> 00:06:04,690
‫De qualquer forma, a primeira função que

139
00:06:04,690 --> 00:06:08,070
‫usaremos com o JWT aqui é sign, ok, então, para

140
00:06:08,070 --> 00:06:11,320
‫basicamente criar um novo token, e para isso, é

141
00:06:11,320 --> 00:06:13,330
‫claro, precisamos da carga útil,

142
00:06:13,330 --> 00:06:16,080
‫precisamos da chave para aquele segredo privado que

143
00:06:16,080 --> 00:06:17,280
‫mencionei antes

144
00:06:17,280 --> 00:06:19,750
‫que seja apenas armazenado em nosso servidor

145
00:06:19,750 --> 00:06:21,607
‫e que precisamos assinar o

146
00:06:21,607 --> 00:06:23,830
‫token e então podemos passar algumas

147
00:06:23,830 --> 00:06:26,040
‫opções e faremos tudo isso em

148
00:06:26,040 --> 00:06:29,270
‫um segundo, eu só quero mostrar a outra função

149
00:06:29,270 --> 00:06:32,040
‫que temos aqui, e que realmente temos uma

150
00:06:32,040 --> 00:06:34,149
‫tonelada de opções aqui, por exemplo

151
00:06:34,149 --> 00:06:36,353
‫expira em, que vamos usar para

152
00:06:38,070 --> 00:06:39,830
‫usar também, então todas

153
00:06:39,830 --> 00:06:41,600
‫essas coisas e depois verificamos.

154
00:06:41,600 --> 00:06:44,200
‫Também falamos sobre o processo de verificação e

155
00:06:44,200 --> 00:06:47,700
‫isso é basicamente implementado nesta função, ok, e isso é

156
00:06:47,700 --> 00:06:49,490
‫o que vamos usar, ao

157
00:06:49,490 --> 00:06:52,740
‫fazer o login de um usuário, ok, e isso

158
00:06:52,740 --> 00:06:54,610
‫é realmente tudo que existe,

159
00:06:54,610 --> 00:06:56,858
‫então você tem tudo essas opções

160
00:06:56,858 --> 00:06:58,400
‫diferentes aqui, ok, você

161
00:06:58,400 --> 00:07:01,140
‫também decodificou, mas essa não é realmente importante,

162
00:07:01,140 --> 00:07:03,990
‫ok, então você vê que este pacote realmente

163
00:07:03,990 --> 00:07:04,980
‫inclui apenas

164
00:07:04,980 --> 00:07:07,870
‫as duas funcionalidades que discutimos no vídeo anterior.

165
00:07:07,870 --> 00:07:11,683
‫Então, assinando e depois verificando, ok.

166
00:07:12,590 --> 00:07:15,060
‫Portanto, vamos voltar aqui e realmente começar

167
00:07:15,060 --> 00:07:18,193
‫a usar o pacote de tokens da Web Jason.

168
00:07:19,830 --> 00:07:21,363
‫Então, vamos importá-lo

169
00:07:24,380 --> 00:07:26,800
‫aqui, e ele geralmente é simplesmente chamado

170
00:07:31,040 --> 00:07:33,920
‫de JWT e requer o token da web Jason.

171
00:07:33,920 --> 00:07:37,053
‫Ok, então vamos criar nosso token aqui, ok, e

172
00:07:39,290 --> 00:07:40,460
‫eu gostaria de

173
00:07:40,460 --> 00:07:43,710
‫simplesmente chamá-lo assim, apenas token, ok, então o sinal

174
00:07:43,710 --> 00:07:48,080
‫de ponto JWT, e agora a primeira coisa é a carga útil,

175
00:07:48,080 --> 00:07:50,460
‫e este é basicamente um objeto

176
00:07:50,460 --> 00:07:52,650
‫para todos os dados que

177
00:07:52,650 --> 00:07:55,260
‫vamos armazenar dentro do token, e neste

178
00:07:55,260 --> 00:07:56,093
‫caso,

179
00:07:56,093 --> 00:07:59,410
‫queremos realmente apenas o ID do usuário, tudo bem,

180
00:07:59,410 --> 00:08:02,210
‫então nada de louco aqui, não muitos dados

181
00:08:02,210 --> 00:08:04,150
‫que não são realmente importantes.

182
00:08:04,150 --> 00:08:06,890
‫Então dizemos que o ID é e

183
00:08:06,890 --> 00:08:09,550
‫simplesmente obtemos o ID do novo usuário

184
00:08:09,550 --> 00:08:12,830
‫que acabou de ser criado, ok, novo ponto de

185
00:08:12,830 --> 00:08:17,530
‫usuário e, em seguida, lembre-se que no MonogoDB, o ID é na verdade

186
00:08:17,530 --> 00:08:21,460
‫chamado de ID de sublinhado, tudo bem, e então é o

187
00:08:21,460 --> 00:08:23,760
‫objeto que são os dados,

188
00:08:23,760 --> 00:08:27,083
‫a carga útil, que queremos colocar em nosso JWT.

189
00:08:27,920 --> 00:08:30,820
‫Em seguida, precisamos do segredo, ok, basicamente uma

190
00:08:30,820 --> 00:08:32,090
‫string para um

191
00:08:33,580 --> 00:08:35,350
‫segredo, tudo bem, claro

192
00:08:35,350 --> 00:08:38,530
‫que este é um terrível, tudo bem, isso é

193
00:08:38,530 --> 00:08:40,340
‫apenas uma espécie de marcador

194
00:08:40,340 --> 00:08:42,770
‫de posição porque, na verdade, nosso arquivo

195
00:08:42,770 --> 00:08:46,720
‫de configuração é um lugar perfeito para armazenar esse tipo de

196
00:08:46,720 --> 00:08:49,460
‫dado secreto, assim como a senha, por exemplo,

197
00:08:49,460 --> 00:08:53,633
‫e vamos adicionar e editar aqui, ok, vamos chamá-lo de JWT, segredo

198
00:08:55,720 --> 00:09:00,070
‫e, claro, o nome que damos aqui, realmente não importa, mas o

199
00:09:00,070 --> 00:09:02,220
‫que importa é o segredo que

200
00:09:02,220 --> 00:09:03,430
‫especificamos

201
00:09:03,430 --> 00:09:06,920
‫aqui, tudo bem, porque usando a criptografia HSA 256 padrão

202
00:09:06,920 --> 00:09:11,920
‫para a assinatura, o segredo deve ter pelo menos trinta e dois caracteres, certo,

203
00:09:11,940 --> 00:09:15,320
‫mas quanto maior, melhor na verdade e é aqui

204
00:09:15,320 --> 00:09:17,880
‫que muitos tutoriais lá fora falham, alguns

205
00:09:17,880 --> 00:09:19,847
‫deles simplesmente colocam uma string

206
00:09:19,847 --> 00:09:22,240
‫bem curta aqui, mas isso não

207
00:09:22,240 --> 00:09:25,280
‫é o ideal novamente, então para melhor criptografar

208
00:09:25,280 --> 00:09:27,010
‫a assinatura, novamente você

209
00:09:27,010 --> 00:09:29,290
‫deve usar pelo menos trinta e

210
00:09:29,290 --> 00:09:32,940
‫dois caracteres, então vou criar meu segredo aqui agora mas

211
00:09:32,940 --> 00:09:34,584
‫você realmente deveria usar

212
00:09:34,584 --> 00:09:37,763
‫outro, ok, por favor, não use o sa eu

213
00:09:37,763 --> 00:09:40,490
‫um como estou fazendo porque isso pode se

214
00:09:40,490 --> 00:09:42,590
‫tornar um problema de segurança para

215
00:09:42,590 --> 00:09:44,180
‫seu aplicativo, ok, sempre

216
00:09:44,180 --> 00:09:47,460
‫use um segredo exclusivo para seus aplicativos e nunca

217
00:09:47,460 --> 00:09:49,400
‫o mesmo, tudo bem, e

218
00:09:49,400 --> 00:09:52,100
‫especialmente não o de outra pessoa, então

219
00:09:52,100 --> 00:09:54,883
‫definitivamente não aquele que eu estou digitando agora.

220
00:09:56,750 --> 00:09:57,820
‫Então isso pode

221
00:09:57,820 --> 00:10:00,160
‫ser qualquer coisa, não tem que ser

222
00:10:00,160 --> 00:10:02,390
‫personagens estranhos ou coisas assim, eu prefiro

223
00:10:02,390 --> 00:10:04,443
‫usar uma frase como essa, meu

224
00:10:07,860 --> 00:10:10,903
‫segredo ultra seguro e ultra longo, então o que aconteceu

225
00:10:11,990 --> 00:10:13,363
‫aqui, de qualquer maneira

226
00:10:14,690 --> 00:10:17,670
‫isso deveria ter trinta e dois caracteres e então

227
00:10:17,670 --> 00:10:18,730
‫este

228
00:10:18,730 --> 00:10:21,400
‫é o que vamos usar para meus tokens

229
00:10:21,400 --> 00:10:24,193
‫da web do Jason, mas, novamente, use outro, certo.

230
00:10:25,489 --> 00:10:29,290
‫De qualquer forma, vamos voltar ao controlador de autenticação aqui e

231
00:10:29,290 --> 00:10:30,733
‫agora realmente usá-lo.

232
00:10:31,810 --> 00:10:34,970
‫Portanto, lembre-se de que uma variável de

233
00:10:34,970 --> 00:10:39,913
‫ambiente é o segredo do processo ponto final ponto JWT,

234
00:10:41,100 --> 00:10:42,100
‫certo.

235
00:10:42,100 --> 00:10:44,490
‫Portanto, neste ponto, temos a carga

236
00:10:44,490 --> 00:10:46,320
‫útil e o segredo.

237
00:10:46,320 --> 00:10:49,400
‫O cabeçalho do token será criado automaticamente, mas agora

238
00:10:49,400 --> 00:10:50,670
‫o que

239
00:10:50,670 --> 00:10:52,390
‫também podemos fazer é passar

240
00:10:52,390 --> 00:10:54,470
‫algumas opções, e a opção que

241
00:10:54,470 --> 00:10:57,390
‫vou passar é quando o JWT deve expirar.

242
00:10:57,390 --> 00:10:59,600
‫Então, isso significa que após o

243
00:10:59,600 --> 00:11:01,240
‫tempo que passaremos aqui, o

244
00:11:01,240 --> 00:11:03,110
‫token da web Jason não

245
00:11:03,110 --> 00:11:04,240
‫será mais

246
00:11:04,240 --> 00:11:06,890
‫válido, mesmo se de outra forma fosse verificado

247
00:11:06,890 --> 00:11:08,060
‫corretamente, tudo bem,

248
00:11:08,060 --> 00:11:10,570
‫então isso é basicamente para desconectar um

249
00:11:10,570 --> 00:11:12,670
‫usuário após um certo período de

250
00:11:12,670 --> 00:11:15,320
‫tempo simplesmente como uma medida de segurança, ok.

251
00:11:15,320 --> 00:11:19,500
‫Portanto, vamos definir esse tempo de expiração também como uma

252
00:11:19,500 --> 00:11:21,493
‫variável de configuração aqui, de

253
00:11:23,320 --> 00:11:28,320
‫modo que o JWT expire em e aqui, é claro, você pode

254
00:11:28,360 --> 00:11:30,536
‫usar o mesmo tempo que

255
00:11:30,536 --> 00:11:31,950
‫estou colocando.

256
00:11:31,950 --> 00:11:33,630
‫Portanto, podemos usar uma

257
00:11:33,630 --> 00:11:36,170
‫string especial como, por exemplo, 90D

258
00:11:36,170 --> 00:11:38,807
‫e o algoritmo de assinatura descobrirá

259
00:11:38,807 --> 00:11:42,350
‫automaticamente que isso significa noventa dias, ok, você também

260
00:11:42,350 --> 00:11:47,350
‫pode usar dez horas ou cinco minutos ou três segundos ou algo

261
00:11:47,360 --> 00:11:49,720
‫assim, ou apenas qualquer número

262
00:11:49,720 --> 00:11:50,800
‫,

263
00:11:50,800 --> 00:11:53,330
‫que será tratado como milissegundos, mas

264
00:11:53,330 --> 00:11:55,820
‫acho melhor simplesmente usar noventa ou

265
00:11:55,820 --> 00:11:59,350
‫algo assim, então, neste caso, noventa dias, tudo bem,

266
00:11:59,350 --> 00:12:01,120
‫e novamente, após noventa

267
00:12:01,120 --> 00:12:03,860
‫dias, o JWT não será mais válido,

268
00:12:03,860 --> 00:12:07,770
‫mesmo que a assinatura está correta e tudo é válido.

269
00:12:07,770 --> 00:12:11,503
‫Ok, então, novamente, apenas como uma medida de segurança

270
00:12:12,880 --> 00:12:13,713
‫adicional,

271
00:12:13,713 --> 00:12:17,180
‫ok, essas opções como sempre, nós as passamos

272
00:12:17,180 --> 00:12:19,820
‫como um objeto e depois vamos

273
00:12:19,820 --> 00:12:24,640
‫especificar a expiração em, então expira em e, em seguida, processa ponto

274
00:12:26,120 --> 00:12:31,120
‫final e o JWT expira em, ok, e isso aqui irá adicionar

275
00:12:32,050 --> 00:12:34,190
‫alguns dados adicionais à carga

276
00:12:34,190 --> 00:12:35,530
‫útil, mas isso

277
00:12:35,530 --> 00:12:37,480
‫não é nenhum problema.

278
00:12:38,410 --> 00:12:40,220
‫Acabamos de criar um token, agora

279
00:12:40,220 --> 00:12:41,500
‫tudo o que

280
00:12:41,500 --> 00:12:43,463
‫precisamos fazer é enviá-lo ao cliente.

281
00:12:44,910 --> 00:12:48,240
‫Então, vamos colocá-lo aqui antes do usuário realmente

282
00:12:48,240 --> 00:12:50,420
‫e, em seguida, é isso.

283
00:12:50,420 --> 00:12:53,350
‫Isso é realmente tudo que precisamos fazer para

284
00:12:53,350 --> 00:12:54,840
‫fazer o login de

285
00:12:54,840 --> 00:12:56,250
‫um novo usuário, porque

286
00:12:56,250 --> 00:12:59,530
‫no momento não estamos verificando se alguma senha está correta

287
00:12:59,530 --> 00:13:00,970
‫ou se o usuário

288
00:13:00,970 --> 00:13:02,890
‫realmente existe no banco de

289
00:13:02,890 --> 00:13:03,840
‫dados

290
00:13:03,840 --> 00:13:05,880
‫porque aqui, neste caso, o usuário

291
00:13:05,880 --> 00:13:08,070
‫acabou de ser criado, e então,

292
00:13:08,070 --> 00:13:10,010
‫imediatamente, logamos o usuário no

293
00:13:10,010 --> 00:13:12,780
‫aplicativo enviando um token, ok, e o uso

294
00:13:12,780 --> 00:13:15,430
‫do cliente deve, então, de alguma forma armazenar

295
00:13:15,430 --> 00:13:16,760
‫esse token, assim

296
00:13:16,760 --> 00:13:21,370
‫como falamos antes na aula anterior, ok, então vamos salvá-lo aqui, e vamos

297
00:13:21,370 --> 00:13:24,160
‫realmente experimentar, ok, vamos ver meu antigo endereço

298
00:13:24,160 --> 00:13:27,040
‫aqui, olá @ jonas. io, vamos enviá-lo e

299
00:13:27,040 --> 00:13:29,210
‫esperar por ele e, de fato, aqui

300
00:13:29,210 --> 00:13:32,910
‫está nosso token da web do Jason, então parabéns, você acabou

301
00:13:32,910 --> 00:13:35,050
‫de criar seu primeiro token da

302
00:13:35,050 --> 00:13:37,490
‫web do Jason, que deve ser um

303
00:13:37,490 --> 00:13:39,760
‫pouco parecido com este e, claro, não

304
00:13:39,760 --> 00:13:42,310
‫será exatamente o mesmo, porque o nosso segredo

305
00:13:42,310 --> 00:13:45,360
‫também não é o mesmo, certo, e agora o

306
00:13:45,360 --> 00:13:46,770
‫que quero mostrar a

307
00:13:46,770 --> 00:13:48,810
‫vocês, é o depurador JWT, que

308
00:13:48,810 --> 00:13:50,730
‫mostrei como screenshot no início do

309
00:13:50,730 --> 00:13:52,010
‫último vídeo.

310
00:13:52,010 --> 00:13:54,140
‫Então, vamos copiar este token

311
00:13:56,050 --> 00:14:00,453
‫e então vamos para o JWT. io, ok, então aqui

312
00:14:02,850 --> 00:14:03,683
‫embaixo

313
00:14:04,540 --> 00:14:06,790
‫nós temos o depurador

314
00:14:06,790 --> 00:14:10,683
‫e vamos excluir este aqui, colocar o nosso

315
00:14:12,170 --> 00:14:14,830
‫e imediatamente você verá que nossa

316
00:14:14,830 --> 00:14:17,580
‫assinatura é inválida, mas isso é

317
00:14:17,580 --> 00:14:20,570
‫porque a função de sinal edita

318
00:14:20,570 --> 00:14:22,090
‫essas duas propriedades

319
00:14:22,090 --> 00:14:25,140
‫aqui, porque especificamos uma expiração data basicamente.

320
00:14:25,140 --> 00:14:27,600
‫Então, isso aqui é emitido em,

321
00:14:27,600 --> 00:14:30,223
‫e este é o tempo de expiração,

322
00:14:31,450 --> 00:14:35,050
‫ok, então se removermos esses dois daqui, você verá

323
00:14:35,050 --> 00:14:36,350
‫que

324
00:14:36,350 --> 00:14:38,620
‫agora, esta assinatura foi verificada,

325
00:14:38,620 --> 00:14:42,260
‫ok, então o que é importante notar aqui, é

326
00:14:42,260 --> 00:14:44,815
‫claro que o cabeçalho está visível

327
00:14:44,815 --> 00:14:47,840
‫ok é facilmente decodificável basicamente, e você que

328
00:14:47,840 --> 00:14:50,820
‫não especificamos nada disso, foi o pacote de

329
00:14:50,820 --> 00:14:54,530
‫tokens da web Jason que fez isso por nós, mas

330
00:14:54,530 --> 00:14:58,560
‫aqui está a carga útil que especificamos, então, se dermos uma

331
00:14:58,560 --> 00:15:00,800
‫olhada neste ID, deve ser

332
00:15:00,800 --> 00:15:03,860
‫exatamente o mesmo que temos no carteiro, terminando

333
00:15:03,860 --> 00:15:06,343
‫em seis OF, e então, de

334
00:15:07,960 --> 00:15:11,493
‫fato, é exatamente o mesmo certo, ok, então esses

335
00:15:13,600 --> 00:15:16,260
‫dois aqui estão abertos e então a

336
00:15:16,260 --> 00:15:19,920
‫assinatura é claro, não podemos realmente veja, porque é claro

337
00:15:19,920 --> 00:15:22,930
‫que nosso segredo é apenas isso, é realmente

338
00:15:22,930 --> 00:15:26,270
‫secreto, tudo bem, então isso era apenas para mostrar

339
00:15:26,270 --> 00:15:29,600
‫a vocês que tudo funciona, e vamos fechar isso,

340
00:15:29,600 --> 00:15:31,242
‫e sim, não podemos

341
00:15:31,242 --> 00:15:35,550
‫fazer o login de usuários, mas somente se o usuário acabou

342
00:15:35,550 --> 00:15:38,050
‫de se cadastrar, pois nesse caso,

343
00:15:38,050 --> 00:15:40,980
‫não precisamos verificar o e-mail no banco

344
00:15:40,980 --> 00:15:42,290
‫de dados, e

345
00:15:42,290 --> 00:15:44,490
‫também não o senha, ok.

346
00:15:44,490 --> 00:15:47,400
‫Então, fazer tudo isso é um processo muito mais complexo,

347
00:15:47,400 --> 00:15:49,340
‫e isso é realmente o que

348
00:15:49,340 --> 00:15:50,940
‫faremos na próxima aula,

349
00:15:50,940 --> 00:15:53,660
‫então na próxima, iremos realmente logar os usuários, com

350
00:15:53,660 --> 00:15:56,543
‫base em seus endereços de e-mail e suas senhas.

