jwt on node – comment le client renvoie-t-il le jeton au serveur

d’accord.

Je pense que je n’ai pas compris une partie élémentaire de l’authentification par jeton.

J’utilise node avec express et j’utilise jwt pour empêcher l’access à mon site si vous n’êtes pas connecté. Je peux créer un jeton sur la page de connexion, puis le renvoyer au client et le stocker dans localStorage / cookie. . Désormais, si l’utilisateur souhaite accéder à une autre page, il va taper une URL et déclencher une requête get.

Comment puis-je accéder à ce jeton à partir de localStorage / cookie et le transmettre au serveur avant de charger la page dans le cadre de la requête get. Mon hypothèse est qu’il devrait exister un moyen de transmettre le jeton au serveur – l’intercepter dans le middleware – et de charger la page si le jeton est légitime ou de le redirect vers la page de connexion si le jeton n’est pas validé correctement.

Sur une demande de publication, cela serait beaucoup plus simple, car vous pouvez récupérer le jeton et le transmettre dans le cadre d’un appel ajax, une fois la page chargée.

J’ai vu des références à l’inclusion du jeton dans l’en-tête de la demande (porteur d’autorisation). Je suppose que cela ne fonctionne que pour post, parce que si vous pouviez définir le paramètre d’en-tête ‘globalement’, pourquoi vous dérangeriez-vous de le stocker côté client dans un cookie / localStorage?

Comme vous pouvez le constater, le stream de travail me laisse un peu perplexe. Il semble que je vais à contre-courant. Toute clarté serait très appréciée.

Si vous utilisez localStoage afin de stocker le fichier JWT, le moyen le plus simple de le transmettre au serveur consiste à extraire d’abord le jeton du localStorage avec localStorage.getItem('token') (ou le nom de votre jeton), puis en l’insérant dans l’en-tête de la requête (GET ou POST / PUT / DELETE). En fonction de la bibliothèque que vous utilisez pour gérer vos demandes http sur le client, il existe différentes façons de le faire. Dans jQuery par exemple, vous pouvez effectuer les opérations suivantes dans la demande AJAX:

 $.ajax({ url: API_URL + "/endpoint", method: "GET", beforeSend: function(request){ request.setRequestHeader("Authorization", "BEARER " + localStorage.getItem('token')); } }) 

Après cela, côté serveur, accédez simplement aux parameters en accédant aux options de request.header , comme vous le feriez normalement. J’espère que cela t’aides!