


Implémentation d'authentification avec next.js et nextauth.js
Jul 30, 2025 am 04:29 AMInstallez Next-Auth et créez des fichiers de routage API APP / API / AUTH / [... NextAuth] /Route.js Configurer Google Login and Secret; 2. Définissez Google_Client_id, Google_Client_Secret et NextAuth_Secret dans .env.Local; 3. Utilisez les méthodes Signin et Signout pour ajouter des boutons de connexion et de déconnexion et envelopper l'application avec SessionProvider; 4. Protéger les pages individuelles via GetServerSession ou utiliser le middleware WithAuth pour protéger les itinéraires spécifiés; 5. étendez étendu les données de session, ajoutez des r?les utilisateur ou des ID via des rappels; 6. Utiliser éventuellement les informations d'identification Le fournisseur prend en charge la connexion par e-mail et nécessite une vérification back-end; 7. Il est recommandé de combiner PRISMA et @ AUTH / PRISAMA-ADAPTER pour persister les données des utilisateurs et de la session pour obtenir un système d'authentification complet.
La mise en ?uvre de l'authentification dans une application Next.js ne doit pas être compliquée - NextAuth.js (maintenant une partie de Auth.js ) facilite l'ajout de connexion sécurisée, de sessions utilisateur et de signals sociaux ou e-mail / mot de passe avec une configuration minimale. Voici comment le faire fonctionner rapidement et correctement.

Configuration de nextauth.js dans une application suivante.js
Commencez par installer les packages requis:
NPM Installer Next-Auth
Le routeur de l'application NEXT.js (V13) utilise des gestionnaires de routes. Créez une route API pour NextAuth sous app/api/auth/[...nextauth]/route.js
:

Importer NextAuth depuis ?Next-Auth?; Importer GoogleProvider à partir de ?Next-Auth / Providers / Google?; const Handler = nextAuth ({ Fournisseurs: [ GoogleProvider ({ clientId: process.env.google_client_id, CLIENTSECRET: process.env.google_client_secret, }), ], secret: process.env.nextauth_secret, }); Export {Handler As Get, Handler As Post};
? Assurez-vous de configurer votre fichier
.env.local
avec les variables d'environnement requises:Google_client_id = your-google-client-id Google_client_secret = your-google-client-secret NextAuth_Secret = votre sécurisé-Secret-hereLe
NEXTAUTH_SECRET
est critique - utilisez une cha?ne aléatoire forte (en générer une avecopenssl rand -base64 32
).
Ajout de boutons de connexion / déconnecter
Utilisez les méthodes signIn()
et signOut()
de next-auth/react
dans vos composants:
?Utiliser le client?; import {sigin, déconnexion, usureSession} à partir de 'Next-Auth / React'; Exporter la fonction par défaut authbutton () { const {data: session} = useSession (); if (session) { Retour ( <div> <p> Bienvenue, {session.user? .Email} </p> <Button onClick = {() => Signout ()}> Signet </futton> </div> )); } Retour ( <Button onClick = {() => Signin ('Google')}> Connectez-vous avec Google </ bouton> )); }
? Enveloppez votre application avec le
SessionProvider
danslayout.js
ouRootLayout
:import {sessionprovider} de 'Next-Auth / React'; Exporter la fonction par défaut rootLayout ({enfants}) { Retour ( <html lang = "en"> <body> <SessionProvider> {Children} </SessionProvider> </docy> </html> )); }
Protéger les itinéraires et les middleware
Pour protéger certaines pages des utilisateurs non authentifiés, vérifiez l'état de la session dans un composant de serveur ou via le middleware.
Option 1: Protégez une page à l'aide du composant du serveur
import {getServerSession} de 'Next-Auth'; import {redirect} à partir de 'suivant / navigation'; Exporter le tableau de bord de la fonction asynchrone par défaut () { const Session = attendre getServerSession (); if (! session) { rediriger ('/ api / auth / sigin'); } return <div> Tableau de bord protégé </div>; }
Option 2: Utilisez du middleware (recommandé pour la protection globale)
Créer middleware.js
dans le répertoire racine ou app
:
import {withauth} de 'Next-Auth / Middleware'; Exporter par défaut WithAuth ({ pages: { Signin: '/ Login', }, }); // applique le middleware uniquement sur des itinéraires spécifiques Exporter const Config = { Matcher: ['/ Dashboard', '/ Profil /: Path *'], };
Cela protège /dashboard
et tous les itinéraires /profile/...
à moins que l'utilisateur ne soit connecté.
Extension des données de session (facultative)
Par défaut, la session ne comprend que des informations utilisateur de base. Pour en ajouter plus (comme un r?le ou un ID), utilisez des rappels:
const Handler = nextAuth ({ Fournisseurs: [...], rappels: { Session asynchronisée ({session, jeton}) { session.user.id = token.sub; session.user.role = token.role || 'utilisateur'; Session de retour; }, async jwt ({token, user}) { if (user) { token.role = user.role; // en supposant que vous stockez un r?le dans votre DB } Token de retour; }, }, });
Maintenant session.user.id
et session.user.role
sont disponibles c?té client.
Prise en charge de la connexion par e-mail / mot de passe
Activer les informations d'identification à l'aide du fournisseur d'identification (Remarque: Non recommandé seul sans validation backend):
Importez des informations d'identification à partir de ?Next-Auth / Providers / Credentials?; IDEDRECTIELSPROVIDER ({ Nom: ?Informations d'identification?, informations d'identification: { Email: {étiquette: 'e-mail', type: 'e-mail'}, Mot de passe: {étiquette: ?mot de passe?, type: ?mot de passe?}, }, ASYNC Authorize (Identials) { // Ajouter une logique pour vérifier les informations d'identification par rapport à votre base de données const user = wait VerifyUser (idementiels.email, indementiels.password); Utilisateur de retour? {id: '1', nom: user.name, e-mail: user.email}: null; }, }),
?? Cette méthode ne crée pas de sessions réelles en soi - validez toujours en toute sécurité et envisagez de se combiner avec un adaptateur de base de données.
Utilisation d'une base de données (facultative mais recommandée)
Pour persister les utilisateurs, liez une base de données à l'aide de prisma et d'un adaptateur:
NPM Installer Prisma @ Prisma / Client @ Auth / Prisma Adapter
Mettez à jour votre configuration NextAuth
:
import {prismaAdapter} de '@ auth / prima-adapter'; import {prismaclient} de '@ prisma / client'; const Prisma = new Prismaclient (); const Handler = nextAuth ({ adaptateur: prismaadapter (prisma), Fournisseurs: [...], });
Cela permet la création d'utilisateurs, le stockage de session et la liaison des comptes.
Fondamentalement, c'est tout. Avec seulement quelques fichiers et une configuration d'environnement solide, vous avez une autorité sécurisée et évolutive dans votre application Next.js - en prenant en charge les connexions sociales, les itinéraires protégés et même la persistance de la base de données. Pas magique, juste des outils bien con?us travaillant ensemble.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans iOS 17, Apple a introduit plusieurs nouvelles fonctionnalités de confidentialité et de sécurité dans son système d'exploitation mobile, dont la possibilité d'exiger une authentification en deux étapes pour les onglets de navigation privée dans Safari. Voici comment cela fonctionne et comment le désactiver. Sur un iPhone ou un iPad exécutant iOS 17 ou iPadOS 17, si un onglet de navigation privée est ouvert dans Safari, puis quittez la session ou l'application, le navigateur d'Apple nécessite désormais une authentification Face ID/TouchID ou un mot de passe pour y accéder à nouveau. En d'autres termes, si quelqu'un met la main sur votre iPhone ou iPad alors qu'il est déverrouillé, il ne pourra toujours pas le voir sans conna?tre votre code d'accès.

L'authentification unique (SSO) est un mécanisme d'authentification qui permet aux utilisateurs de s'authentifier sur plusieurs applications et sites à l'aide d'un seul ensemble d'informations d'identification, comme un nom d'utilisateur et un mot de passe. Ce mécanisme peut améliorer l’expérience utilisateur et l’efficacité tout en renfor?ant la sécurité. En PHP, l'implémentation de l'authentification unique nécessite certaines méthodes spécifiques. Ci-dessous, nous présenterons comment implémenter l'authentification unique en PHP. Nous le diviserons selon les étapes suivantes : Créer un centre d'authentification utilisateur (AuthenticationCenter) à l'aide d'OAuth2

Implémentation de l'authentification des utilisateurs à l'aide d'un middleware dans le framework Slim Avec le développement des applications Web, l'authentification des utilisateurs est devenue une fonctionnalité cruciale. Afin de protéger les informations personnelles et les données sensibles des utilisateurs, nous avons besoin d'une méthode fiable pour vérifier l'identité de l'utilisateur. Dans cet article, nous présenterons comment implémenter l’authentification des utilisateurs à l’aide du middleware du framework Slim. Le framework Slim est un framework PHP léger qui fournit un moyen simple et rapide de créer des applications Web. L'une des fonctionnalités puissantes est le milieu

L'authentification est l'une des parties les plus importantes de toute application Web. Ce didacticiel traite des systèmes d'authentification basés sur des jetons et de leurs différences par rapport aux systèmes de connexion traditionnels. à la fin de ce didacticiel, vous verrez une démo entièrement fonctionnelle écrite en Angular et Node.js. Systèmes d'authentification traditionnels Avant de passer aux systèmes d'authentification basés sur des jetons, examinons les systèmes d'authentification traditionnels. L'utilisateur fournit son nom d'utilisateur et son mot de passe dans le formulaire de connexion et clique sur Connexion. Après avoir effectué la demande, authentifiez l'utilisateur sur le backend en interrogeant la base de données. Si la demande est valide, une session est créée à l'aide des informations utilisateur obtenues à partir de la base de données et les informations de session sont renvoyées dans l'en-tête de réponse afin que l'ID de session soit stocké dans le navigateur. Donne accès aux applications soumises à

Avec le développement rapide d'Internet et de l'Internet mobile, de plus en plus d'applications nécessitent une authentification et un contr?le des autorisations, et JWT (JSON Web Token), en tant que mécanisme léger d'authentification et d'autorisation, est largement utilisé dans les applications WEB. Beego est un framework MVC basé sur le langage Go, qui présente les avantages d'efficacité, de simplicité et d'évolutivité. Cet article explique comment utiliser JWT pour implémenter l'authentification dans Beego. 1. Introduction à JWT JSONWebToken (JWT) est un

Comment utiliser le contr?le des autorisations et l'authentification en C# nécessite des exemples de code spécifiques à l'ère d'Internet d'aujourd'hui, les problèmes de sécurité des informations font l'objet d'une attention croissante. Afin de protéger la sécurité des systèmes et des données, le contr?le des autorisations et l'authentification sont devenus un élément essentiel des développeurs. En tant que langage de programmation couramment utilisé, C# fournit une multitude de fonctions et de bibliothèques de classes pour nous aider à mettre en ?uvre le contr?le des autorisations et l'authentification. Le contr?le des autorisations fait référence à la restriction de l'accès d'un utilisateur à des ressources spécifiques en fonction de son identité, de son r?le, de ses autorisations, etc. Une manière courante d'implémenter le contr?le des autorisations consiste à

Meilleures pratiques d'utilisation d'OAuth2 pour l'authentification dans le langage Go L'utilisation d'OAuth2 pour l'authentification des utilisateurs est très courante dans les applications Web modernes. Il s'agit d'un protocole standard qui facilite l'accès autorisé aux ressources protégées par des applications tierces. Le langage Go dispose de puissantes bibliothèques prenant en charge OAuth2, permettant aux développeurs d'implémenter facilement le processus OAuth2. Cependant, utiliser correctement le protocole OAuth2 n’est pas chose aisée. Cet article vise à fournir des informations sur l'utilisation d'OAuth2 pour l'identité en langage Go.

LDAP (LightweightDirectoryAccessProtocol) est un protocole permettant d'accéder aux services d'annuaire distribués. Il peut être utilisé pour des taches telles que l'authentification des utilisateurs, l'autorisation, la maintenance des comptes et le stockage des données. Dans les applications PHP, LDAP peut être utilisé comme un puissant mécanisme d'authentification pour fournir de puissantes fonctions d'authentification et d'autorisation aux applications. Cet article explique comment utiliser LDAP pour l'authentification des utilisateurs en PHP. Le contenu spécifique comprend?: Installation et configuration.
