‫- : Dans ce cours, nous allons
‫très vite apprendre à tester des connexions https sécurisées, avec un
‫Heroku, car nous
‫en avons réellement besoin, à un
‫moment donné, dans notre application.
‫Passons donc ici à notre contrôleur d'authentification.
‫Et juste ici en haut,
‫dans cette fonction de création de jeton
‫envoyé, voici l'endroit où nous définissons
‫le cookie Web adjacent à sécuriser, si nous
‫sommes actuellement en production.
‫Souviens-toi de ça.
‫Donc, rappelez-vous que nous avons créé cette
‫fonction avec une
‫réponse adjacente, elle envoie également
‫un cookie, qui contient également le jeton Web adjacent.
‫Et ce cookie a plusieurs options.
‫Le premier, quand il expire.
‫Le
‫second, qu'il n'est accessible que via http essentiellement.
‫Et puis, quand on est en
‫production, on s'est dit que ce cookie ne peut
‫être envoyé que sur une connexion sécurisée.
‫Donc, en gros, sur une connexion https.
‫Très bien.
‫Maintenant, le problème avec ça, c'est
‫qu'en fait, le fait que nous soyons en
‫production, ne signifie pas que la connexion est réellement sécurisée.
‫À droite?
‫Car bien sûr, toutes les applications
‫déployées ne sont pas automatiquement définies sur https.
‫Et donc nous devons changer cela si nous avons ici.
‫Très bien.
‫Maintenant, dans express, nous avons en fait une propriété sécurisée qui
‫se trouve sur la demande.
‫Et ce n'est que
‫lorsque la connexion est sécurisée, que cette demande dot secure est vraie.
‫D'accord?
‫C'est logique, non ?
‫Maintenant, le problème est qu'en fait, dans Heroku,
‫cela ne fonctionne pas.
‫Et c'est parce
‫que le proxy Heroku redirige ou modifie essentiellement toutes les demandes
‫entrantes dans notre application avant qu'elles n'atteignent réellement l'application.
‫Très bien.
‫Ainsi, pour que cela fonctionne également sur Heroku, nous
‫devons également tester si l'en-tête du proto avant
‫x est défini sur https.
‫Très bien.
‫Donc, cela semble un
‫peu déroutant, mais encore une fois, c'est quelque chose que Heroku fait en interne.
‫Alors, testons ici si req. secure est
‫vrai, ou si req. en-têtes.
‫Et l'en-tête que nous recherchons est x proto transféré.
‫Et cet en-tête est défini sur https si nous
‫sommes sur une connexion sécurisée.
‫Très bien?
‫Donc, c'est quelque chose de très spécifique à Heroku.
‫Et c'est pourquoi j'ai laissé cela ici pour la dernière
‫section, après avoir déjà déployé l'application.
‫Donc, si l'un ou l'autre req. secure est vrai, ou
‫si cet en-tête ici est défini sur https, alors nous voulons
‫que les options sécurisées ici soient définies sur true.
‫Et, donc, nous pouvons réellement refactoriser cela.
‫Donc, fondamentalement, nous pouvons accepter cela,
‫car ce sera vrai.
‫Et, donc, je dis si
‫c'est vrai, alors disons égal vrai ici.
‫Donc, ça n'a pas de sens.
‫Au lieu de cela, nous pouvons simplement le faire comme ça.
‫Très bien?
‫Et, en fait, nous pouvons aller encore plus loin.
‫Et mettez l'option sécurisée ici.
‫Alors, pourquoi l'avoir dehors si on peut juste le mettre ici ?
‫Alors, la sécurité équivaut à ça, d'accord ?
‫Et puis on n'a plus besoin de ça.
‫Et, puisque nous procédons à une
‫refactorisation, nous n'avons en fait plus besoin du tout de cette variable ici.
‫Alors, mettons-le simplement ici, donnons-lui un coffre-fort, et il y
‫a quelque chose qui ne va pas là-bas.
‫D'accord, et donc, maintenant le problème est
‫que vous n'avez pas accès actuellement à la requête
‫dans cette fonction.
‫D'accord, nous devons l'ajouter ici.
‫Demande, puis partout où nous avons créé un jeton envoyé, nous devons
‫bien sûr y transmettre la demande.
‫Alors, c'est ici.
‫Donc, utilisez la commande D pour trouver le suivant en gros.
‫Demandez ici.
‫Et puis enfin ici aussi.
‫D'accord, ça a l'air beaucoup plus
‫joli et ça devrait aussi fonctionner beaucoup mieux qu'avant.
‫Cependant, pour le moment, cela ne fonctionnera toujours pas, car il
‫ne reste qu'une chose à faire, qui consiste
‫essentiellement à faire en sorte que notre application fasse confiance aux proxy.
‫Donc, encore une fois, request dot
‫secure ne fonctionne pas en premier lieu car Heroku
‫agit comme un proxy, qui redirige et modifie les demandes entrantes.
‫Et, donc, nous devons aller à l'application
‫point JS, puis juste après celle-ci ici,
‫faisons maintenant confiance aux proxy.
‫Et nous le faisons en disant que le point d'application active le proxy de confiance.
‫D'accord?
‫Donc, c'est quelque chose qui est intégré dans
‫express pour ce genre de situations.
‫Très bien?
‫Et donc, seulement si nous avons correctement configuré
‫ce paramètre ici, alors cet en-tête ici sera correctement
‫défini et nous pourrons lire sa valeur.
‫Très bien?
‫C'est ainsi que vous testez si une connexion est sécurisée ou non,
‫lorsque votre application est déployée sur Heroku.