{"id":75241,"date":"2023-12-27T19:23:33","date_gmt":"2023-12-27T18:23:33","guid":{"rendered":"https:\/\/kinqsta.com\/fr\/?p=75241&#038;preview=true&#038;preview_id=75241"},"modified":"2023-12-28T19:54:27","modified_gmt":"2023-12-28T18:54:27","slug":"authentification-next-js","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/","title":{"rendered":"Consid\u00e9rations lors de la mise en place de l&rsquo;authentification dans Next.js"},"content":{"rendered":"<p>Au cours des derni\u00e8res ann\u00e9es, l&rsquo;ajout d&rsquo;une authentification \u00e0 votre application est pass\u00e9 de quelque chose d&rsquo;obscur et de compliqu\u00e9 \u00e0 quelque chose pour lequel vous pouvez litt\u00e9ralement utiliser une API.<\/p>\n<p>Il n&rsquo;y a pas de p\u00e9nurie de d\u00e9p\u00f4ts d&rsquo;exemples et de tutoriels sur la fa\u00e7on d&rsquo;impl\u00e9menter des sch\u00e9mas d&rsquo;authentification sp\u00e9cifiques dans Next.js, mais moins sur le pourquoi des sch\u00e9mas, des outils et des compromis choisis.<\/p>\n<p>Cet article vous expliquera ce qu&rsquo;il faut prendre en compte lorsque l&rsquo;on aborde l&rsquo;authentification dans Next.js, depuis le choix d&rsquo;un fournisseur jusqu&rsquo;\u00e0 la construction de routes pour la connexion et le choix entre le c\u00f4t\u00e9 serveur et le c\u00f4t\u00e9 client.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Choisir une m\u00e9thode d&rsquo;authentification\/un fournisseur<\/h2>\n<p>Il y a fondamentalement 1000 fa\u00e7ons d&rsquo;int\u00e9grer l&rsquo;authentification dans votre application. Plut\u00f4t que de se concentrer sur des fournisseurs particuliers (le sujet d&rsquo;un autre article de blog), examinons les <strong>types de solutions d&rsquo;authentification<\/strong> et quelques exemples de chacune d&rsquo;entre elles. En termes d&rsquo;impl\u00e9mentation, <a href=\"https:\/\/next-auth.js.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">next-auth<\/a> devient rapidement une option populaire pour int\u00e9grer votre application Next.js avec plusieurs fournisseurs, ajouter le SSO, etc.<\/p>\n<h3>Base de donn\u00e9es traditionnelle<\/h3>\n<p>Celle-ci est aussi simple que possible : vous stockez les noms d&rsquo;utilisateur et les mots de passe dans une base de donn\u00e9es relationnelle. Lorsqu&rsquo;un utilisateur s&rsquo;inscrit pour la premi\u00e8re fois, vous ins\u00e9rez une nouvelle ligne dans la table \u00ab users\u00a0 avec les informations fournies. Lorsqu&rsquo;il se connecte, vous v\u00e9rifiez les informations d&rsquo;identification par rapport \u00e0 ce que vous avez stock\u00e9 dans la table. Lorsqu&rsquo;un utilisateur souhaite modifier son mot de passe, vous mettez \u00e0 jour la valeur de la table.<\/p>\n<p>L&rsquo;authentification traditionnelle par base de donn\u00e9es est certainement le syst\u00e8me d&rsquo;authentification le plus populaire si l&rsquo;on consid\u00e8re l&rsquo;ensemble des applications existantes, et elle existe pratiquement depuis toujours. Il est tr\u00e8s flexible, bon march\u00e9 et ne vous enferme pas dans un fournisseur particulier. Mais vous devez le construire vous-m\u00eame et, en particulier, vous pr\u00e9occuper du cryptage et vous assurer que vos mots de passe ne tombent pas entre de mauvaises mains.<\/p>\n<h3>Solutions d&rsquo;authentification de votre fournisseur de base de donn\u00e9es<\/h3>\n<p>Au cours des derni\u00e8res ann\u00e9es (et pour Firebase, il y a plus de quelques ann\u00e9es), il est devenu relativement courant pour les fournisseurs de bases de donn\u00e9es g\u00e9r\u00e9es de proposer une sorte de solution d&rsquo;authentification g\u00e9r\u00e9e. <a href=\"https:\/\/firebase.google.com\/docs\/auth\" target=\"_blank\" rel=\"noopener noreferrer\">Firebase<\/a>, <a href=\"https:\/\/supabase.com\/auth\" target=\"_blank\" rel=\"noopener noreferrer\">Supabase<\/a> et <a href=\"https:\/\/aws.amazon.com\/cognito\/\" target=\"_blank\" rel=\"noopener noreferrer\">AWS<\/a> proposent tous une base de donn\u00e9es g\u00e9r\u00e9e et une authentification g\u00e9r\u00e9e en tant que service via une suite d&rsquo;API qui fait facilement abstraction de la cr\u00e9ation d&rsquo;utilisateurs et de la gestion des sessions (nous y reviendrons plus tard).<\/p>\n<p>Pour connecter un utilisateur avec l&rsquo;authentification Supabase, <a href=\"https:\/\/supabase.com\/docs\/guides\/auth\/auth-email\" target=\"_blank\" rel=\"noopener noreferrer\">rien de plus simple<\/a>:<\/p>\n<pre><code class=\"language-javascript\">async function signInWithEmail() {\n  const { data, error } = await supabase.auth.signInWithPassword({\n    email: 'example@email.com',\n    password: 'example-password',\n  })\n}<\/code><\/pre>\n<h3>Des solutions d&rsquo;authentification qui ne proviennent pas de votre fournisseur de base de donn\u00e9es<\/h3>\n<p>L&rsquo;authentification en tant que service de votre DBaaS est peut-\u00eatre encore plus courante que l&rsquo;authentification en tant que service d&rsquo;une entreprise ou d&rsquo;un produit entier. <a href=\"https:\/\/auth0.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Auth0<\/a> existe depuis 2013 (et appartient maintenant \u00e0 Okta), et des ajouts r\u00e9cents comme <a href=\"https:\/\/stytch.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Stytch<\/a> ont donn\u00e9 la priorit\u00e9 \u00e0 l&rsquo;exp\u00e9rience des d\u00e9veloppeurs et ont gagn\u00e9 une certaine notori\u00e9t\u00e9.<\/p>\n<figure>\n<p><figure style=\"width: 1244px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/11\/Auth0-authentication.png\" alt=\"Auth0 pour l'authentification\" width=\"1244\" height=\"814\"><figcaption class=\"wp-caption-text\">Auth0 pour l&rsquo;authentification<\/figcaption><\/figure><\/figure>\n<h3>Authentification unique (SSO)<\/h3>\n<p>Le SSO vous permet d&rsquo;\u00ab externaliser \u00bb votre identit\u00e9 \u00e0 un fournisseur externe, qui peut \u00eatre une entreprise, un fournisseur ax\u00e9 sur la s\u00e9curit\u00e9 comme <a href=\"https:\/\/www.okta.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Okta<\/a> ou quelque chose de plus largement adopt\u00e9 comme <a href=\"https:\/\/developers.google.com\/identity\/gsi\/web\/guides\/overview\" target=\"_blank\" rel=\"noopener noreferrer\">Google<\/a> ou GitHub. Le SSO de Google est omnipr\u00e9sent dans le monde du SaaS, et certains outils destin\u00e9s aux d\u00e9veloppeurs <em>ne<\/em> s&rsquo;authentifient <em>que<\/em> via GitHub.<\/p>\n<p>Quel que soit le ou les fournisseurs choisis, le SSO est g\u00e9n\u00e9ralement un compl\u00e9ment aux autres types d&rsquo;authentification mentionn\u00e9s ci-dessus et comporte ses propres <a href=\"https:\/\/workos.com\/blog\/the-developers-guide-to-sso\" target=\"_blank\" rel=\"noopener noreferrer\">particularit\u00e9s<\/a> en mati\u00e8re d&rsquo;int\u00e9gration avec des plateformes externes (attention : SAML utilise XML).<\/p>\n<h3>D&rsquo;accord, alors lequel me convient le mieux ?<\/h3>\n<p>Il n&rsquo;y a pas de \u00ab bon \u00bb choix ici &#8211; ce qui convient \u00e0 votre projet d\u00e9pend de vos priorit\u00e9s. Si vous voulez que les choses bougent rapidement sans une tonne de configuration initiale, l&rsquo;externalisation de l&rsquo;authentification a du sens (m\u00eame l&rsquo;externalisation compl\u00e8te, interface utilisateur incluse, \u00e0 quelqu&rsquo;un comme Auth0). Si vous anticipez une configuration plus complexe, construire votre propre backend d&rsquo;authentification est judicieux. Et si vous envisagez de soutenir des clients plus importants, vous aurez besoin d&rsquo;ajouter le SSO \u00e0 un moment donn\u00e9.<\/p>\n<p>Next.js est tellement populaire que la plupart de ces fournisseurs d&rsquo;authentification ont des documents et des guides d&rsquo;int\u00e9gration sp\u00e9cifiques \u00e0 Next.js.<\/p>\n<h2><strong>Construire des routes pour l&rsquo;inscription et la connexion, et des conseils pour aller plus loin dans l&rsquo;authentification<\/strong><\/h2>\n<p>Certains fournisseurs d&rsquo;authentification comme Auth0 fournissent en fait des pages web enti\u00e8res h\u00e9berg\u00e9es pour l&rsquo;inscription et la connexion. Mais si vous construisez ces pages \u00e0 partir de z\u00e9ro, je trouve qu&rsquo;il est utile de les cr\u00e9er t\u00f4t dans le processus car vous en aurez besoin pour fournir des redirections lorsque vous mettrez en \u0153uvre votre authentification.<\/p>\n<p>Il est donc logique de cr\u00e9er la structure de ces pages et d&rsquo;ajouter les requ\u00eates au backend apr\u00e8s coup. La fa\u00e7on la plus simple d&rsquo;impl\u00e9menter l&rsquo;authentification est d&rsquo;avoir deux de ces routes :<\/p>\n<ul>\n<li>Une pour l&rsquo;<strong>inscription<\/strong><\/li>\n<li>Une autre pour <strong>se connecter<\/strong> une fois que l&rsquo;utilisateur a d\u00e9j\u00e0 un compte<\/li>\n<\/ul>\n<p>Au-del\u00e0 des principes de base, vous devrez couvrir les cas particuliers, par exemple lorsqu&rsquo;un utilisateur oublie son mot de passe. Certaines \u00e9quipes pr\u00e9f\u00e8rent que le processus de r\u00e9initialisation du mot de passe se d\u00e9roule sur une route distincte, tandis que d&rsquo;autres ajoutent des \u00e9l\u00e9ments d&rsquo;interface utilisateur dynamiques \u00e0 la page d&rsquo;ouverture de session habituelle.<\/p>\n<p>Une belle page d&rsquo;inscription ne fera peut-\u00eatre pas la diff\u00e9rence entre le succ\u00e8s et l&rsquo;\u00e9chec, mais de petites touches peuvent laisser une bonne impression et am\u00e9liorer l&rsquo;interface utilisateur. Voici quelques exemples de sites qui ont mis un peu plus d&rsquo;amour dans leurs processus d&rsquo;authentification.<\/p>\n<h3>1. Mettez \u00e0 jour votre barre de navigation en cas de session active<\/h3>\n<p>L&rsquo;appel \u00e0 l&rsquo;action de Stripe dans sa barre de navigation change selon que vous avez une session authentifi\u00e9e ou non. Voici \u00e0 quoi ressemble le site de marketing si vous n&rsquo;\u00eates pas authentifi\u00e9. Notez l&rsquo;appel \u00e0 l&rsquo;action pour vous connecter :<\/p>\n<figure>\n<p><figure style=\"width: 1999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/11\/stripe-homepage.png\" alt=\"La page d'accueil de Stripe modifie l'appel \u00e0 l'action selon que vous \u00eates ou non authentifi\u00e9\" width=\"1999\" height=\"1191\"><figcaption class=\"wp-caption-text\">La page d&rsquo;accueil de Stripe modifie l&rsquo;appel \u00e0 l&rsquo;action selon que vous \u00eates ou non authentifi\u00e9<\/figcaption><\/figure><\/figure>\n<p>Et voici \u00e0 quoi ressemble la page d&rsquo;accueil si vous \u00eates authentifi\u00e9. Notez que l&rsquo;appel \u00e0 l&rsquo;action change pour amener l&rsquo;utilisateur \u00e0 son tableau de bord au lieu de se connecter :<\/p>\n<figure>\n<p><figure style=\"width: 1999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/11\/stripe-homepage-changes.png\" alt=\"Modifications de la page d'accueil de Stripe\" width=\"1999\" height=\"1176\"><figcaption class=\"wp-caption-text\">Modifications de la page d&rsquo;accueil de Stripe<\/figcaption><\/figure><\/figure>\n<p>Cela ne change pas fondamentalement mon exp\u00e9rience avec Stripe, mais c&rsquo;est agr\u00e9able.<\/p>\n<p>Une parenth\u00e8se technique int\u00e9ressante : il y a une bonne raison pour que la plupart des entreprises ne fassent pas d\u00e9pendre la barre de navigation de leur site marketing de l&rsquo;authentification &#8211; cela signifierait une requ\u00eate API suppl\u00e9mentaire pour v\u00e9rifier l&rsquo;\u00e9tat d&rsquo;authentification \u00e0 chaque chargement de page, la majorit\u00e9 d&rsquo;entre elles \u00e9tant destin\u00e9es \u00e0 des visiteurs qui ne sont probablement pas authentifi\u00e9s.<\/p>\n<h3>2. Ajoutez un contenu utile au formulaire d&rsquo;inscription<\/h3>\n<p>Au cours des derni\u00e8res ann\u00e9es, en particulier dans le domaine du SaaS, les entreprises ont commenc\u00e9 \u00e0 ajouter du contenu \u00e0 la page d&rsquo;inscription pour \u00ab encourager \u00bb l&rsquo;utilisateur \u00e0 terminer l&rsquo;inscription. Cela peut contribuer \u00e0 am\u00e9liorer votre taux de conversion sur la page, au moins de mani\u00e8re progressive.<\/p>\n<p>Voici une page d&rsquo;inscription de Retool, avec une animation et quelques logos sur le c\u00f4t\u00e9 :<\/p>\n<figure>\n<p><figure style=\"width: 1999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/11\/retool-signup-page.png\" alt=\"Si vous d\u00e9cidez de proc\u00e9der de la sorte, veillez \u00e0 ce que les polices de chaque c\u00f4t\u00e9 correspondent.\" width=\"1999\" height=\"1083\"><figcaption class=\"wp-caption-text\">Si vous d\u00e9cidez de proc\u00e9der de la sorte, veillez \u00e0 ce que les polices de chaque c\u00f4t\u00e9 correspondent.<\/figcaption><\/figure><\/figure>\n<p>C&rsquo;est \u00e9galement ce que nous faisons chez Kinsta pour notre page d&rsquo;inscription :<\/p>\n<figure>\n<p><figure style=\"width: 1999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/11\/mykinsta-sign-in.png\" alt=\"Page d'inscription Kinsta\" width=\"1999\" height=\"1174\"><figcaption class=\"wp-caption-text\">Page d&rsquo;inscription Kinsta<\/figcaption><\/figure><\/figure>\n<p>Le petit contenu suppl\u00e9mentaire peut aider \u00e0 rappeler \u00e0 l&rsquo;utilisateur ce pour quoi il s&rsquo;inscrit et pourquoi il en a besoin.<\/p>\n<h3>3. Si vous utilisez un mot de passe : sugg\u00e9rez ou imposez un mot de passe fort<\/h3>\n<p>Je me sens \u00e0 l&rsquo;aise pour dire que les d\u00e9veloppeurs savent tous que les mots de passe sont intrins\u00e8quement peu s\u00fbrs, mais ce <em>n&rsquo;est pas<\/em> le cas de toutes les personnes qui s&rsquo;inscriront \u00e0 votre produit. Encourager vos utilisateurs \u00e0 cr\u00e9er des mots de passe s\u00fbrs est bon pour vous et bon pour eux.<\/p>\n<p>Coinbase est assez strict en ce qui concerne l&rsquo;inscription et exige que vous utilisiez un mot de passe s\u00e9curis\u00e9 plus compliqu\u00e9 que votre simple pr\u00e9nom :<\/p>\n<figure>\n<p><figure style=\"width: 1428px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/11\/coinbase-create-account.png\" alt=\"Mot de passe faible sur Coinbase\" width=\"1428\" height=\"1494\"><figcaption class=\"wp-caption-text\">Mot de passe faible sur Coinbase<\/figcaption><\/figure><\/figure>\n<p>Apr\u00e8s avoir g\u00e9n\u00e9r\u00e9 un mot de passe \u00e0 partir de mon gestionnaire de mots de passe, j&rsquo;\u00e9tais pr\u00eat \u00e0 partir :<\/p>\n<figure>\n<p><figure style=\"width: 1464px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/11\/coinbase-password-strength.png\" alt=\"Mot de passe fort sur Coinbase\" width=\"1464\" height=\"1462\"><figcaption class=\"wp-caption-text\">Mot de passe fort sur Coinbase<\/figcaption><\/figure><\/figure>\n<p>L&rsquo;interface utilisateur ne m&rsquo;a cependant pas expliqu\u00e9 <em>pourquoi<\/em> le mot de passe n&rsquo;\u00e9tait pas assez s\u00fbr, ni quelles \u00e9taient les exigences au-del\u00e0 de la pr\u00e9sence d&rsquo;un num\u00e9ro. Le fait d&rsquo;inclure ces informations dans le texte de votre produit rendra les choses plus faciles pour votre utilisateur et permettra d&rsquo;\u00e9viter les frustrations li\u00e9es aux tentatives de nouvel essai du mot de passe.<\/p>\n<h3>4. Labellisez vos entr\u00e9es pour qu&rsquo;elles soient compatibles avec un gestionnaire de mots de passe<\/h3>\n<p>Un Am\u00e9ricain sur trois utilise un gestionnaire de mot de passe comme <a href=\"https:\/\/1password.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">1Password<\/a>, et pourtant de nombreux formulaires sur le web continuent d&rsquo;ignorer le \u00ab type= \u00bb dans les entr\u00e9es HTML. <a href=\"https:\/\/hidde.blog\/making-password-managers-play-ball-with-your-login-form\/\" target=\"_blank\" rel=\"noopener noreferrer\">Faites en sorte que vos formulaires soient compatibles avec les gestionnaires de mots de passe<\/a>:<\/p>\n<ul>\n<li>Enfermez vos \u00e9l\u00e9ments d&rsquo;entr\u00e9e dans un \u00e9l\u00e9ment de formulaire<\/li>\n<li>Attribuez un type et un libell\u00e9 aux entr\u00e9es<\/li>\n<li>Ajoutez des capacit\u00e9s d&rsquo;autocompl\u00e9tion \u00e0 vos entr\u00e9es<\/li>\n<li>N&rsquo;ajoutez pas de champs de mani\u00e8re dynamique (je vous regarde, <a href=\"https:\/\/www.reddit.com\/r\/delta\/comments\/f8s1sq\/why_does_the_delta_website_require_my_last_name\/\" target=\"_blank\" rel=\"noopener noreferrer\">Delta<\/a>)<\/li>\n<\/ul>\n<p>Cela peut faire la diff\u00e9rence entre une connexion incroyablement fluide en 10 secondes et une connexion manuelle ennuyeuse, en particulier sur mobile.<\/p>\n<h2><strong>Choisir entre Sessions et JWT<\/strong><\/h2>\n<p>Une fois que votre utilisateur s&rsquo;est authentifi\u00e9, vous devez choisir une strat\u00e9gie pour conserver cet \u00e9tat lors des requ\u00eates suivantes. HTTP est sans \u00e9tat, et nous ne voulons certainement pas demander \u00e0 notre utilisateur son mot de passe \u00e0 chaque requ\u00eate. Il existe <a href=\"https:\/\/stytch.com\/blog\/jwts-vs-sessions-which-is-right-for-you\/\" target=\"_blank\" rel=\"noopener noreferrer\">deux m\u00e9thodes populaires pour g\u00e9rer cela<\/a> &#8211; les <strong>sessions<\/strong> (ou cookies) et les <strong>JWT<\/strong> (jetons web JSON) &#8211; et elles diff\u00e8rent selon que c&rsquo;est le serveur ou le client qui fait le travail.<\/p>\n<h3>Sessions, ou cookies<\/h3>\n<p>Dans l&rsquo;authentification par session, la logique et le travail de maintien de l&rsquo;authentification sont pris en charge par le <strong>serveur<\/strong>. Voici le processus de base :<\/p>\n<ol start=\"1\">\n<li>L&rsquo;utilisateur s&rsquo;authentifie via la page de connexion.<\/li>\n<li><strong>Le serveur cr\u00e9e un enregistrement<\/strong> qui repr\u00e9sente cette \u00ab session \u00bb de navigation particuli\u00e8re Cet enregistrement est g\u00e9n\u00e9ralement ins\u00e9r\u00e9 dans une base de donn\u00e9es avec un identifiant al\u00e9atoire et des d\u00e9tails sur la session, comme sa date de d\u00e9but et sa date d&rsquo;expiration.<\/li>\n<li>Cet identifiant al\u00e9atoire &#8211; quelque chose comme `6982e583b1874abf9078e1d1dd5442f1` &#8211; est envoy\u00e9 \u00e0 votre navigateur et <strong>stock\u00e9 sous forme de cookie<\/strong>.<\/li>\n<li>Lors des requ\u00eates ult\u00e9rieures du client, l&rsquo;identifiant est inclus et <strong>v\u00e9rifi\u00e9 dans le tableau des sessions <\/strong>de la base de donn\u00e9es.<\/li>\n<\/ol>\n<p>C&rsquo;est assez simple et modifiable en ce qui concerne la dur\u00e9e des sessions, le moment o\u00f9 elles doivent \u00eatre r\u00e9voqu\u00e9es, etc. L&rsquo;inconv\u00e9nient est la latence \u00e0 une \u00e9chelle significative, \u00e9tant donn\u00e9 toutes les \u00e9critures et les lectures dans la base de donn\u00e9es, mais ce n&rsquo;est peut-\u00eatre pas une consid\u00e9ration majeure pour la plupart des lecteurs.<\/p>\n<h3>Jetons web JSON (JWT)<\/h3>\n<p>Au lieu de g\u00e9rer l&rsquo;authentification pour les requ\u00eates ult\u00e9rieures sur le serveur, les <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc7519\" target=\"_blank\" rel=\"noopener noreferrer\">JWT<\/a> vous permettent de les g\u00e9rer (principalement) du <strong>c\u00f4t\u00e9 client<\/strong>. Voici comment cela fonctionne :<\/p>\n<ol start=\"1\">\n<li>L&rsquo;utilisateur s&rsquo;authentifie via la page de connexion.<\/li>\n<li><strong>Le serveur g\u00e9n\u00e8re un JWT<\/strong> qui contient l&rsquo;identit\u00e9 de l&rsquo;utilisateur, les autorisations qui lui sont accord\u00e9es et une date d&rsquo;expiration (parmi d&rsquo;autres \u00e9l\u00e9ments potentiels).<\/li>\n<li><strong>Le serveur signe ce jeton<\/strong> en cryptant son contenu et envoie le tout au client.<\/li>\n<li>Pour chaque demande, le client peut <strong>d\u00e9crypter le jeton<\/strong> et v\u00e9rifier que l&rsquo;utilisateur a la permission de faire la requ\u00eate (tout cela sans avoir besoin de communiquer avec le serveur).<\/li>\n<\/ol>\n<p>Avec tout le travail d&rsquo;authentification post-initiale d\u00e9charg\u00e9 sur le client, votre application peut se charger et fonctionner beaucoup plus rapidement. Mais il y a un probl\u00e8me majeur : il n&rsquo;y a aucun moyen d&rsquo;invalider un JWT \u00e0 partir du serveur. Si l&rsquo;utilisateur souhaite se d\u00e9connecter d&rsquo;un appareil ou si la port\u00e9e de son autorisation change, vous devez attendre que le JWT expire.<\/p>\n<h2><strong>Choisir entre l&rsquo;authentification c\u00f4t\u00e9 serveur et l&rsquo;authentification c\u00f4t\u00e9 client<\/strong><\/h2>\n<p>Une partie de ce qui rend Next.js g\u00e9nial est le rendu statique int\u00e9gr\u00e9 &#8211; si votre page est statique, c&rsquo;est-\u00e0-dire qu&rsquo;elle n&rsquo;a pas besoin de faire des appels d&rsquo;API externes, Next.js la met automatiquement en cache et peut la servir extr\u00eamement rapidement via un CDN. Pre-Next.js 13 sait si une page est statique si vous n&rsquo;incluez pas de \u00ab getServerSideProps \u00bb ou \u00ab getInitialProps \u00bb dans le fichier, tandis que toutes les versions post\u00e9rieures \u00e0 Next.js 13 utilisent <a href=\"https:\/\/nextjs.org\/docs\/app\/building-your-application\/rendering\/server-components\" target=\"_blank\" rel=\"noopener noreferrer\">React Server Components<\/a> pour le faire \u00e0 la place.<\/p>\n<p>Pour l&rsquo;authentification, <a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/routing\/authenticating\" target=\"_blank\" rel=\"noopener noreferrer\">vous avez le choix<\/a> entre rendre une page statique de \u00ab chargement \u00bb et faire la recherche c\u00f4t\u00e9 client ou tout faire c\u00f4t\u00e9 serveur. Pour les pages qui requi\u00e8rent une authentification <a href=\"#ftnt1\">[1]<\/a>, vous pouvez rendre un \u00ab squelette \u00bb statique et effectuer les requ\u00eates d&rsquo;authentification c\u00f4t\u00e9 client. En th\u00e9orie, cela signifie que la page se charge plus rapidement, m\u00eame si le contenu initial n&rsquo;est pas enti\u00e8rement pr\u00eat.<\/p>\n<p>Voici un exemple simplifi\u00e9 tir\u00e9 de la documentation qui rend un \u00e9tat de chargement tant que l&rsquo;objet utilisateur n&rsquo;est pas pr\u00eat :<\/p>\n<pre><code class=\"language-javascript\">import useUser from '..\/lib\/useUser'\n \nconst Profile = () =&gt; {\n  \/\/ Fetch the user client-side\n  const { user } = useUser({ redirectTo: '\/login' })\n \n  \/\/ Server-render loading state\n  if (!user || user.isLoggedIn === false) {\n    \/\/ Build some sort of loading page here\n    return &lt;div&gt;Loading...&lt;\/div&gt;\n  }\n \n  \/\/ Once the user request finishes, show the user\n  return (\n    &lt;div&gt;\n      &lt;h1&gt;Your Account&lt;\/h1&gt;\n      &lt;p&gt;Username: {JSON.stringify(user.username,null)}&lt;\/p&gt;\n      &lt;p&gt;Email: {JSON.stringify(user.email,null)}&lt;\/p&gt;\n      &lt;p&gt;Address: {JSON.stringify(user.address,null)}&lt;\/p&gt;\n    &lt;\/div&gt;\n  )\n}\n \nexport default Profile<\/code><\/pre>\n<p>Notez que vous devrez construire une sorte d&rsquo;interface utilisateur de chargement pour conserver l&rsquo;espace pendant que le client fait des requ\u00eates apr\u00e8s le chargement.<\/p>\n<p>Si vous voulez simplifier les choses et ex\u00e9cuter l&rsquo;authentification c\u00f4t\u00e9 serveur, vous pouvez ajouter votre demande d&rsquo;authentification dans la fonction \u00ab getServerSideProps \u00bb, et Next attendra de rendre la page jusqu&rsquo;\u00e0 ce que la demande soit compl\u00e8te. Au lieu de la logique conditionnelle de l&rsquo;extrait ci-dessus, vous pouvez ex\u00e9cuter quelque chose de plus simple comme cette version simplifi\u00e9e de la documentation de Next :<\/p>\n<pre><code class=\"language-javascript\">import withSession from '..\/lib\/session'\n \nexport const getServerSideProps = withSession(async function ({ req, res }) {\n  const { user } = req.session\n \n  if (!user) {\n    return {\n      redirect: {\n        destination: '\/login',\n        permanent: false,\n      },\n    }\n  }\n \n  return {\n    props: { user },\n  }\n})\n \nconst Profile = ({ user }) =&gt; {\n  \/\/ Show the user. No loading state is required\n  return (\n    &lt;div&gt;\n      &lt;h1&gt;Your Account&lt;\/h1&gt;\n      &lt;p&gt;Username: {JSON.stringify(user.username,null)}&lt;\/p&gt;\n      &lt;p&gt;Email: {JSON.stringify(user.email,null)}&lt;\/p&gt;\n      &lt;p&gt;Address: {JSON.stringify(user.address,null)}&lt;\/p&gt;\n    &lt;\/div&gt;\n  )\n}\n \nexport default Profile<\/code><\/pre>\n<p>Il y a toujours une logique ici pour g\u00e9rer l&rsquo;\u00e9chec de l&rsquo;authentification, mais elle redirige vers la connexion au lieu de rendre un \u00e9tat de chargement.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Alors, laquelle de ces solutions convient le mieux \u00e0 votre projet ? Commencez par \u00e9valuer votre confiance dans la rapidit\u00e9 de votre syst\u00e8me d&rsquo;authentification. Si vos requ\u00eates ne prennent pas de temps, vous pouvez les ex\u00e9cuter c\u00f4t\u00e9 serveur et \u00e9viter l&rsquo;\u00e9tat de chargement. Si vous voulez donner la priorit\u00e9 au rendu de <em>quelque chose<\/em> tout de suite et attendre la requ\u00eate, sautez \u00ab getServerSideProps \u00bb et ex\u00e9cutez l&rsquo;authentification ailleurs.<\/p>\n<p><a href=\"#ftnt_ref1\">[1]<\/a> Lorsque vous utilisez Next, c&rsquo;est une bonne raison de ne pas exiger l&rsquo;authentification pour chaque page. Il est plus simple de le faire, mais cela signifie que vous passez \u00e0 c\u00f4t\u00e9 des avantages de performance du framework web en premier lieu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Au cours des derni\u00e8res ann\u00e9es, l&rsquo;ajout d&rsquo;une authentification \u00e0 votre application est pass\u00e9 de quelque chose d&rsquo;obscur et de compliqu\u00e9 \u00e0 quelque chose pour lequel vous &#8230;<\/p>\n","protected":false},"author":310,"featured_media":75242,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[979,1004],"class_list":["post-75241","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-frameworks-javascript","topic-react"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Consid\u00e9rations lors de la mise en place de l&#039;authentification dans Next.js - Kinsta<\/title>\n<meta name=\"description\" content=\"Du choix d&#039;un fournisseur \u00e0 la construction de routes pour la connexion, il y a plusieurs choses \u00e0 prendre en compte lors de la mise en place de l&#039;authentification dans Next.js ?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Consid\u00e9rations lors de la mise en place de l&#039;authentification dans Next.js\" \/>\n<meta property=\"og:description\" content=\"Du choix d&#039;un fournisseur \u00e0 la construction de routes pour la connexion, il y a plusieurs choses \u00e0 prendre en compte lors de la mise en place de l&#039;authentification dans Next.js ?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-27T18:23:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-28T18:54:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Justin Gage\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Du choix d&#039;un fournisseur \u00e0 la construction de routes pour la connexion, il y a plusieurs choses \u00e0 prendre en compte lors de la mise en place de l&#039;authentification dans Next.js ?\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Justin Gage\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/\"},\"author\":{\"name\":\"Justin Gage\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9c79ef0f55180723ff2b31baffe9070f\"},\"headline\":\"Consid\u00e9rations lors de la mise en place de l&rsquo;authentification dans Next.js\",\"datePublished\":\"2023-12-27T18:23:33+00:00\",\"dateModified\":\"2023-12-28T18:54:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/\"},\"wordCount\":2745,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/\",\"name\":\"Consid\u00e9rations lors de la mise en place de l'authentification dans Next.js - Kinsta\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg\",\"datePublished\":\"2023-12-27T18:23:33+00:00\",\"dateModified\":\"2023-12-28T18:54:27+00:00\",\"description\":\"Du choix d'un fournisseur \u00e0 la construction de routes pour la connexion, il y a plusieurs choses \u00e0 prendre en compte lors de la mise en place de l'authentification dans Next.js ?\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frameworks JavaScript\",\"item\":\"https:\/\/kinqsta.com\/fr\/sujets\/frameworks-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Consid\u00e9rations lors de la mise en place de l&rsquo;authentification dans Next.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9c79ef0f55180723ff2b31baffe9070f\",\"name\":\"Justin Gage\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/204874e8a52203e297ea240336c356ba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/204874e8a52203e297ea240336c356ba?s=96&d=mm&r=g\",\"caption\":\"Justin Gage\"},\"description\":\"Justin is a technical writer and author of the popular Technically newsletter. He did his B.S. in Data Science before a stint in full-stack engineering and now focuses on making complex technical concepts accessible to everyone.\",\"sameAs\":[\"https:\/\/technically.substack.com\/\"],\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/author\/justingage\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Consid\u00e9rations lors de la mise en place de l'authentification dans Next.js - Kinsta","description":"Du choix d'un fournisseur \u00e0 la construction de routes pour la connexion, il y a plusieurs choses \u00e0 prendre en compte lors de la mise en place de l'authentification dans Next.js ?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/","og_locale":"fr_FR","og_type":"article","og_title":"Consid\u00e9rations lors de la mise en place de l'authentification dans Next.js","og_description":"Du choix d'un fournisseur \u00e0 la construction de routes pour la connexion, il y a plusieurs choses \u00e0 prendre en compte lors de la mise en place de l'authentification dans Next.js ?","og_url":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-12-27T18:23:33+00:00","article_modified_time":"2023-12-28T18:54:27+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg","type":"image\/jpeg"}],"author":"Justin Gage","twitter_card":"summary_large_image","twitter_description":"Du choix d'un fournisseur \u00e0 la construction de routes pour la connexion, il y a plusieurs choses \u00e0 prendre en compte lors de la mise en place de l'authentification dans Next.js ?","twitter_image":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Justin Gage","Dur\u00e9e de lecture estim\u00e9e":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/"},"author":{"name":"Justin Gage","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9c79ef0f55180723ff2b31baffe9070f"},"headline":"Consid\u00e9rations lors de la mise en place de l&rsquo;authentification dans Next.js","datePublished":"2023-12-27T18:23:33+00:00","dateModified":"2023-12-28T18:54:27+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/"},"wordCount":2745,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/","url":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/","name":"Consid\u00e9rations lors de la mise en place de l'authentification dans Next.js - Kinsta","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg","datePublished":"2023-12-27T18:23:33+00:00","dateModified":"2023-12-28T18:54:27+00:00","description":"Du choix d'un fournisseur \u00e0 la construction de routes pour la connexion, il y a plusieurs choses \u00e0 prendre en compte lors de la mise en place de l'authentification dans Next.js ?","breadcrumb":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#primaryimage","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/considerations-when-setting-up-authentication-in-next-js.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/fr\/blog\/authentification-next-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Frameworks JavaScript","item":"https:\/\/kinqsta.com\/fr\/sujets\/frameworks-javascript\/"},{"@type":"ListItem","position":3,"name":"Consid\u00e9rations lors de la mise en place de l&rsquo;authentification dans Next.js"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/fr\/#website","url":"https:\/\/kinqsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/9c79ef0f55180723ff2b31baffe9070f","name":"Justin Gage","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/204874e8a52203e297ea240336c356ba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/204874e8a52203e297ea240336c356ba?s=96&d=mm&r=g","caption":"Justin Gage"},"description":"Justin is a technical writer and author of the popular Technically newsletter. He did his B.S. in Data Science before a stint in full-stack engineering and now focuses on making complex technical concepts accessible to everyone.","sameAs":["https:\/\/technically.substack.com\/"],"url":"https:\/\/kinqsta.com\/fr\/blog\/author\/justingage\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/75241","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/users\/310"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/comments?post=75241"}],"version-history":[{"count":6,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/75241\/revisions"}],"predecessor-version":[{"id":75267,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/75241\/revisions\/75267"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75241\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75241\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75241\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75241\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75241\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75241\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75241\/translations\/es"},{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75241\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media\/75242"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media?parent=75241"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/tags?post=75241"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/topic?post=75241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}