‫-: Nesta aula, vamos aprender muito
‫rapidamente como testar conexões https seguras, com um Heroku,
‫porque na
‫verdade precisamos disso, em um
‫ponto, em nosso aplicativo.
‫Então, vamos aqui para o nosso controlador de autenticação.
‫E bem aqui no topo,
‫nesta função de criação de token enviado,
‫aqui é o lugar onde definimos
‫o cookie da web adjacente para proteger, se
‫estivermos atualmente em produção.
‫Lembre-se disso.
‫Portanto, lembre-se de que criamos essa função
‫com resposta adjacente,
‫ela também envia um cookie,
‫que também contém o token da web adjacente.
‫E esse cookie tem algumas opções.
‫O primeiro, quando expira.
‫O
‫segundo, que só pode ser acessado via http basicamente.
‫E então, quando estamos
‫em produção, dissemos que esse cookie só pode
‫ser enviado em uma conexão segura.
‫Então, basicamente, em uma conexão https.
‫Tudo bem.
‫Agora, o problema com isso
‫é que, na verdade, o fato de estarmos
‫em produção não significa que a conexão seja realmente segura.
‫Direito?
‫Obviamente, nem todos os aplicativos
‫implantados são configurados automaticamente para https.
‫E então precisamos mudar isso se tivermos aqui.
‫Tudo bem.
‫Agora, no expresso, realmente temos uma propriedade segura
‫que está no pedido.
‫E somente quando
‫a conexão for segura, este ponto de solicitação seguro é verdadeiro.
‫OK?
‫Faz sentido, certo?
‫Agora, o problema é que, na verdade, no
‫Heroku, isso não funciona.
‫E isso é porque
‫o proxy do Heroku, basicamente, redireciona ou modifica todas as solicitações recebidas
‫em nosso aplicativo antes que realmente cheguem ao aplicativo.
‫Tudo bem.
‫Portanto, para que isso funcione também no Heroku,
‫precisamos também testar se o cabeçalho x forward
‫proto está definido como https.
‫Tudo bem.
‫Então, isso parece um
‫pouco confuso, mas, novamente, isso é algo que o Heroku faz internamente.
‫Então, vamos testar aqui se req. seguro é
‫verdadeiro, ou se req. cabeçalhos.
‫E o cabeçalho que procuramos é o proto encaminhado x.
‫E este cabeçalho é definido como https se estivermos
‫em uma conexão segura.
‫Tudo bem?
‫Então, isso é algo muito específico do Heroku.
‫E é por isso que deixei isso aqui para a última seção,
‫depois que já implantamos o aplicativo.
‫Portanto, se qualquer um dos req. secure for true, ou
‫se este cabeçalho aqui estiver definido como https, então queremos que
‫as opções secure aqui sejam definidas como true.
‫E, então, podemos realmente refatorar isso.
‫Então, basicamente podemos pegar isso,
‫porque isso será verdade.
‫E, então, eu digo que se
‫isso for verdade, então vamos dizer igual verdade aqui.
‫Então, isso não faz sentido.
‫Em vez disso, podemos simplesmente fazer assim.
‫Tudo bem?
‫E, na verdade, podemos ir ainda mais longe.
‫E coloque a opção segura bem aqui.
‫Então, por que deixá-lo do lado de fora se podemos simplesmente colocá-lo aqui?
‫Então, seguro é igual a isso, certo?
‫E então não precisamos mais disso.
‫E, como estamos
‫refatorando, não precisamos mais dessa variável aqui.
‫Então, vamos colocá-lo aqui, dar-lhe um cofre,
‫e há algo errado aí.
‫Ok, e assim, agora o
‫problema é que não tenho acesso atualmente a
‫requisição nesta função.
‫Ok, então, precisamos adicioná-lo aqui.
‫Solicite e onde quer que tenhamos criado o token enviado, é claro
‫que precisamos passar a solicitação lá.
‫Então, está aqui.
‫Portanto, use o comando D para encontrar o próximo basicamente.
‫Solicite aqui.
‫E finalmente aqui também.
‫Ok, isso parece muito melhor
‫e também deve funcionar muito melhor do que antes.
‫No entanto, agora, isso ainda não vai funcionar, porque
‫há apenas mais uma coisa que
‫precisamos fazer, que é basicamente tornar nosso aplicativo proxy confiável.
‫Portanto, novamente, o request dot secure
‫não funciona em primeiro lugar porque o Heroku atua
‫como um proxy, que redireciona e modifica as solicitações recebidas.
‫E, então, precisamos ir para app dot
‫JS e, logo após este aqui, vamos
‫agora confiar no proxy.
‫E fazemos isso dizendo app dot enable trust proxy.
‫OK?
‫Então, isso é algo embutido no Express
‫para esse tipo de situação.
‫Tudo bem?
‫E assim, apenas se tivermos essa configuração configurada
‫corretamente aqui, este cabeçalho aqui será configurado corretamente e
‫seremos capazes de ler seu valor.
‫Tudo bem?
‫Então, é assim que você testa se uma conexão é segura ou
‫não, quando tem seu aplicativo implantado no Heroku.