﻿1
00:00:00,191 --> 00:00:02,870
‫-: Nesta aula, vamos aprender muito

2
00:00:02,870 --> 00:00:07,210
‫rapidamente como testar conexões https seguras, com um Heroku,

3
00:00:07,210 --> 00:00:08,730
‫porque na

4
00:00:08,730 --> 00:00:11,041
‫verdade precisamos disso, em um

5
00:00:11,041 --> 00:00:12,983
‫ponto, em nosso aplicativo.

6
00:00:14,540 --> 00:00:18,560
‫Então, vamos aqui para o nosso controlador de autenticação.

7
00:00:18,560 --> 00:00:21,060
‫E bem aqui no topo,

8
00:00:21,060 --> 00:00:24,049
‫nesta função de criação de token enviado,

9
00:00:24,049 --> 00:00:26,840
‫aqui é o lugar onde definimos

10
00:00:26,840 --> 00:00:30,240
‫o cookie da web adjacente para proteger, se

11
00:00:30,240 --> 00:00:32,343
‫estivermos atualmente em produção.

12
00:00:33,300 --> 00:00:34,661
‫Lembre-se disso.

13
00:00:34,661 --> 00:00:37,630
‫Portanto, lembre-se de que criamos essa função

14
00:00:37,630 --> 00:00:39,270
‫com resposta adjacente,

15
00:00:39,270 --> 00:00:41,255
‫ela também envia um cookie,

16
00:00:41,255 --> 00:00:44,670
‫que também contém o token da web adjacente.

17
00:00:44,670 --> 00:00:47,090
‫E esse cookie tem algumas opções.

18
00:00:47,090 --> 00:00:49,260
‫O primeiro, quando expira.

19
00:00:49,260 --> 00:00:50,093
‫O

20
00:00:50,093 --> 00:00:54,490
‫segundo, que só pode ser acessado via http basicamente.

21
00:00:54,490 --> 00:00:56,570
‫E então, quando estamos

22
00:00:56,570 --> 00:00:59,344
‫em produção, dissemos que esse cookie só pode

23
00:00:59,344 --> 00:01:01,480
‫ser enviado em uma conexão segura.

24
00:01:01,480 --> 00:01:04,770
‫Então, basicamente, em uma conexão https.

25
00:01:04,770 --> 00:01:05,810
‫Tudo bem.

26
00:01:05,810 --> 00:01:08,117
‫Agora, o problema com isso

27
00:01:08,117 --> 00:01:10,810
‫é que, na verdade, o fato de estarmos

28
00:01:10,810 --> 00:01:14,370
‫em produção não significa que a conexão seja realmente segura.

29
00:01:14,370 --> 00:01:15,340
‫Direito?

30
00:01:15,340 --> 00:01:18,200
‫Obviamente, nem todos os aplicativos

31
00:01:18,200 --> 00:01:21,470
‫implantados são configurados automaticamente para https.

32
00:01:21,470 --> 00:01:25,021
‫E então precisamos mudar isso se tivermos aqui.

33
00:01:25,021 --> 00:01:25,892
‫Tudo bem.

34
00:01:25,892 --> 00:01:29,700
‫Agora, no expresso, realmente temos uma propriedade segura

35
00:01:29,700 --> 00:01:31,860
‫que está no pedido.

36
00:01:31,860 --> 00:01:33,682
‫E somente quando

37
00:01:33,682 --> 00:01:38,630
‫a conexão for segura, este ponto de solicitação seguro é verdadeiro.

38
00:01:38,630 --> 00:01:39,463
‫OK?

39
00:01:39,463 --> 00:01:41,090
‫Faz sentido, certo?

40
00:01:41,090 --> 00:01:43,790
‫Agora, o problema é que, na verdade, no

41
00:01:43,790 --> 00:01:45,370
‫Heroku, isso não funciona.

42
00:01:45,370 --> 00:01:47,107
‫E isso é porque

43
00:01:47,107 --> 00:01:52,107
‫o proxy do Heroku, basicamente, redireciona ou modifica todas as solicitações recebidas

44
00:01:52,290 --> 00:01:56,170
‫em nosso aplicativo antes que realmente cheguem ao aplicativo.

45
00:01:56,170 --> 00:01:57,003
‫Tudo bem.

46
00:01:57,003 --> 00:02:00,682
‫Portanto, para que isso funcione também no Heroku,

47
00:02:00,682 --> 00:02:04,200
‫precisamos também testar se o cabeçalho x forward

48
00:02:04,200 --> 00:02:06,952
‫proto está definido como https.

49
00:02:06,952 --> 00:02:07,785
‫Tudo bem.

50
00:02:07,785 --> 00:02:09,204
‫Então, isso parece um

51
00:02:09,204 --> 00:02:13,170
‫pouco confuso, mas, novamente, isso é algo que o Heroku faz internamente.

52
00:02:13,170 --> 00:02:16,549
‫Então, vamos testar aqui se req. seguro é

53
00:02:16,549 --> 00:02:21,549
‫verdadeiro, ou se req. cabeçalhos.

54
00:02:22,134 --> 00:02:27,134
‫E o cabeçalho que procuramos é o proto encaminhado x.

55
00:02:29,820 --> 00:02:33,830
‫E este cabeçalho é definido como https se estivermos

56
00:02:33,830 --> 00:02:36,210
‫em uma conexão segura.

57
00:02:36,210 --> 00:02:37,050
‫Tudo bem?

58
00:02:37,050 --> 00:02:40,190
‫Então, isso é algo muito específico do Heroku.

59
00:02:40,190 --> 00:02:43,870
‫E é por isso que deixei isso aqui para a última seção,

60
00:02:43,870 --> 00:02:46,113
‫depois que já implantamos o aplicativo.

61
00:02:46,950 --> 00:02:50,700
‫Portanto, se qualquer um dos req. secure for true, ou

62
00:02:50,700 --> 00:02:55,150
‫se este cabeçalho aqui estiver definido como https, então queremos que

63
00:02:55,150 --> 00:02:58,660
‫as opções secure aqui sejam definidas como true.

64
00:02:58,660 --> 00:03:01,213
‫E, então, podemos realmente refatorar isso.

65
00:03:02,680 --> 00:03:04,500
‫Então, basicamente podemos pegar isso,

66
00:03:04,500 --> 00:03:06,180
‫porque isso será verdade.

67
00:03:06,180 --> 00:03:08,186
‫E, então, eu digo que se

68
00:03:08,186 --> 00:03:10,860
‫isso for verdade, então vamos dizer igual verdade aqui.

69
00:03:10,860 --> 00:03:12,041
‫Então, isso não faz sentido.

70
00:03:12,041 --> 00:03:15,023
‫Em vez disso, podemos simplesmente fazer assim.

71
00:03:16,590 --> 00:03:18,110
‫Tudo bem?

72
00:03:18,110 --> 00:03:20,820
‫E, na verdade, podemos ir ainda mais longe.

73
00:03:20,820 --> 00:03:23,883
‫E coloque a opção segura bem aqui.

74
00:03:25,350 --> 00:03:28,313
‫Então, por que deixá-lo do lado de fora se podemos simplesmente colocá-lo aqui?

75
00:03:29,150 --> 00:03:33,823
‫Então, seguro é igual a isso, certo?

76
00:03:35,550 --> 00:03:37,723
‫E então não precisamos mais disso.

77
00:03:38,910 --> 00:03:41,370
‫E, como estamos

78
00:03:41,370 --> 00:03:46,173
‫refatorando, não precisamos mais dessa variável aqui.

79
00:03:48,130 --> 00:03:50,946
‫Então, vamos colocá-lo aqui, dar-lhe um cofre,

80
00:03:50,946 --> 00:03:53,520
‫e há algo errado aí.

81
00:03:53,520 --> 00:03:55,950
‫Ok, e assim, agora o

82
00:03:55,950 --> 00:03:59,190
‫problema é que não tenho acesso atualmente a

83
00:03:59,190 --> 00:04:00,680
‫requisição nesta função.

84
00:04:00,680 --> 00:04:03,103
‫Ok, então, precisamos adicioná-lo aqui.

85
00:04:04,050 --> 00:04:09,050
‫Solicite e onde quer que tenhamos criado o token enviado, é claro

86
00:04:09,120 --> 00:04:11,693
‫que precisamos passar a solicitação lá.

87
00:04:13,020 --> 00:04:14,063
‫Então, está aqui.

88
00:04:17,000 --> 00:04:19,763
‫Portanto, use o comando D para encontrar o próximo basicamente.

89
00:04:21,150 --> 00:04:22,353
‫Solicite aqui.

90
00:04:27,740 --> 00:04:31,193
‫E finalmente aqui também.

91
00:04:33,010 --> 00:04:36,352
‫Ok, isso parece muito melhor

92
00:04:36,352 --> 00:04:40,940
‫e também deve funcionar muito melhor do que antes.

93
00:04:40,940 --> 00:04:44,480
‫No entanto, agora, isso ainda não vai funcionar, porque

94
00:04:44,480 --> 00:04:47,460
‫há apenas mais uma coisa que

95
00:04:47,460 --> 00:04:51,350
‫precisamos fazer, que é basicamente tornar nosso aplicativo proxy confiável.

96
00:04:51,350 --> 00:04:54,180
‫Portanto, novamente, o request dot secure

97
00:04:54,180 --> 00:04:57,550
‫não funciona em primeiro lugar porque o Heroku atua

98
00:04:57,550 --> 00:05:01,500
‫como um proxy, que redireciona e modifica as solicitações recebidas.

99
00:05:01,500 --> 00:05:04,819
‫E, então, precisamos ir para app dot

100
00:05:04,819 --> 00:05:08,010
‫JS e, logo após este aqui, vamos

101
00:05:08,010 --> 00:05:10,640
‫agora confiar no proxy.

102
00:05:10,640 --> 00:05:15,033
‫E fazemos isso dizendo app dot enable trust proxy.

103
00:05:20,680 --> 00:05:21,513
‫OK?

104
00:05:21,513 --> 00:05:24,498
‫Então, isso é algo embutido no Express

105
00:05:24,498 --> 00:05:26,980
‫para esse tipo de situação.

106
00:05:26,980 --> 00:05:27,813
‫Tudo bem?

107
00:05:27,813 --> 00:05:31,400
‫E assim, apenas se tivermos essa configuração configurada

108
00:05:31,400 --> 00:05:35,210
‫corretamente aqui, este cabeçalho aqui será configurado corretamente e

109
00:05:35,210 --> 00:05:38,483
‫seremos capazes de ler seu valor.

110
00:05:39,450 --> 00:05:40,410
‫Tudo bem?

111
00:05:40,410 --> 00:05:44,470
‫Então, é assim que você testa se uma conexão é segura ou

112
00:05:44,470 --> 00:05:47,363
‫não, quando tem seu aplicativo implantado no Heroku.

