Cette bibliothèque vous permet d'intégrer de manière transparente l'authentification Google dans votre application Next.js, éliminant ainsi le besoin de la développer à partir de zéro.
L'intégration d'un système d'authentification sécurisé est une étape de développement cruciale qui fournit non seulement un environnement sûr aux utilisateurs, mais qui inspire également la confiance dans votre produit. Ce système garantit que leurs données sont protégées et que seules les personnes autorisées peuvent accéder à l'application.
Construire une authentification sécurisée à partir de zéro peut être un processus long qui nécessite une compréhension des protocoles et des processus d'authentification, en particulier lors de la gestion de différentes authentifications fournisseurs.
En utilisant NextAuth, vous pouvez vous concentrer sur la création des fonctionnalités de base. Lisez la suite pour savoir comment intégrer la connexion sociale Google dans votre application à l'aide de NextAuth.
Comment fonctionne NextAuth
NextAuth.js est une bibliothèque d'authentification open source qui simplifie le processus d'ajout Authentification et autorisation fonctionnalité aux applications Next.js ainsi que la personnalisation des workflows d'authentification. Il fournit une gamme de fonctionnalités telles que la messagerie électronique, l'authentification sans mot de passe et la prise en charge de divers fournisseurs d'authentification tels que Google, GitHub, etc.
À un niveau élevé, NextAuth agit comme un middleware, facilitant le processus d'authentification entre votre application et le fournisseur. Sous le capot, lorsqu'un utilisateur tente de se connecter, il est redirigé vers la page de connexion de Google. Une fois l'authentification réussie, Google renvoie une charge utile qui inclut les données de l'utilisateur, telles que son nom et son adresse e-mail. Ces données sont utilisées pour autoriser l'accès à l'application et à ses ressources.
À l'aide des données utiles, NextAuth crée une session pour chaque utilisateur authentifié et stocke le jeton de session dans un cookie HTTP sécurisé uniquement. Le jeton de session est utilisé pour vérifier l'identité de l'utilisateur et conserver son statut d'authentification. Ce processus s'applique également à d'autres fournisseurs avec de légères variations dans la mise en œuvre.
Enregistrez votre application Next.js sur Google Developer Console
NextAuth prend en charge le service d'authentification de Google. Cependant, pour que votre application interagisse avec les API Google et permette aux utilisateurs de s'authentifier avec leurs identifiants Google, vous devrez enregistrer votre application sur la console développeur de Google et obtenir un identité du client et Clé secrète du client.
Pour ce faire, accédez à Console de développeur Google. Ensuite, connectez-vous avec votre compte Google pour accéder à la console. Une fois connecté, créez un nouveau projet.
Sur la page de présentation du projet, sélectionnez le API et services onglet de la liste des services dans le volet de menu de gauche et enfin, l'onglet Crédits option.
Clique sur le Créer des identifiants bouton pour générer votre ID client et votre secret client. Ensuite, spécifiez le type d'application à partir des options données, puis fournissez un nom pour votre application.
Ensuite, spécifiez l'URL de la route d'accueil de votre application et enfin spécifiez l'URI de redirection autorisée pour votre application. Pour ce cas, il faudrait http://localhost: 3000/api/auth/rappel/google comme spécifié par les paramètres du fournisseur Google de NextAuth.
Une fois l'inscription réussie, Google vous fournira un ID client et un secret client à utiliser dans votre application.
Configurer l'application NextJS
Pour commencer, créez un projet Next.js localement :
npx créer-next-app prochaine-auth-app
Une fois la configuration terminée, accédez au répertoire de projet nouvellement créé et exécutez cette commande pour lancer le serveur de développement.
npm run dev
Ouvrez votre navigateur et accédez à http://localhost: 3000. Cela devrait être le résultat attendu.
Vous pouvez trouver le code de ce projet dans son Référentiel GitHub.
Configuration du fichier .env
Dans le dossier racine de votre projet, créez un nouveau fichier et nommez-le .env pour contenir votre ID client, votre secret et l'URL de base.
NEXT_PUBLIC_GOOGLE_CLIENT_ID= 'identité du client'
NEXT_PUBLIC_GOOGLE_CLIENT_SECRET= 'secret'
NEXT_PUBLIC_NEXTAUTH_URL= ' http://localhost: 3000'
L'URL NextAUTH est utilisée pour spécifier l'URL de base de votre application, qui est utilisée pour rediriger les utilisateurs une fois l'authentification terminée.
Intégrez NextAuth dans votre application Next.js
Tout d'abord, installez la bibliothèque de NextAuth dans votre projet.
npm installer la prochaine authentification
Ensuite, dans le /pages répertoire, créez un nouveau dossier et nommez-le API. Changez le répertoire pour le API dossier et créez un autre dossier appelé auth. Dans le dossier auth, ajoutez un nouveau fichier et nommez-le [...nextauth].js et ajoutez les lignes de code suivantes.
importer Auth Suivant depuis"next-auth/next";
importer Fournisseur Google depuis"next-auth/fournisseurs/google";
exporterdéfaut AuthSuiv({
fournisseurs:[
FournisseurGoogle({
ID client: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID,
clientSecret: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_SECRET,
}),
]
});
Ce code configure Google en tant que fournisseur d'authentification. La fonction NextAuth définit l'objet de configuration du fournisseur Google qui comprend deux propriétés: un ID client et un secret client qui initialise le fournisseur.
Ensuite, ouvrez le pages/_app.js fichier et apportez les modifications suivantes au code.
importer'../styles/globals.css'
importer { Fournisseur de session } depuis"next-auth/react"
fonctionMonApp({ Composant, pageProps: { session, ...pageProps } }) {
retour (
</SessionProvider>
)
}
exporterdéfaut MonApp
NextAuth's Fournisseur de session Le composant fournit une fonctionnalité de gestion de l'état d'authentification à l'application Next.js. Il faut un session prop qui contient les données de session d'authentification renvoyées par l'API de Google, y compris les détails de l'utilisateur tels que son identifiant, son adresse e-mail et son jeton d'accès.
En enveloppant le MonApp composant avec le composant SessionProvider, l'objet de session d'authentification avec les détails de l'utilisateur est mis à disposition dans toute l'application, permettant à l'application de persister et d'afficher les pages en fonction de leur état d'authentification.
Configurer le fichier index.js
Ouvrez le pages/index.js fichier, supprimez le code passe-partout et ajoutez le code ci-dessous pour créer un bouton de connexion qui dirige les utilisateurs vers une page de connexion.
importer Diriger depuis'suivant/tête'
importer modes depuis'../styles/Accueil.module.css'
importer { useRouter } depuis'suivant/routeur';exporterdéfautfonctionMaison() {
constante routeur = useRouter();
retour (
Créer l'application suivante</title>
"description" content="Généré par créer l'application suivante" />
"icon" href="/favicon.ico" />
</Head>
Bienvenue sur " https://nextjs.org">Next.js!</a>
</h1>
Commencez par vous connecter dans{' ' }
avec votre compte Google</code>
</div>
)
}
Ce code utilise le hook Next.js useRouter pour gérer le routage au sein de l'application en définissant un objet routeur. Lorsque le bouton de connexion est cliqué, la fonction de gestionnaire appelle la méthode router.push pour rediriger l'utilisateur à la page de connexion.
Créer une authentification de connexion Page
Dans le répertoire pages, créez un nouveau fichier Login.js, puis ajoutez les lignes de code suivantes.
import { useSession, signIn, signOut } from "next-auth/react"
import { useRouter } from 'next /router' ;
importer les styles depuis '../styles/Login.module.css'exporter par défaut fonction < span>Connexion() {
const { données: session } = useSession()
const router = useRouter();
if (session) {
return (
"title">Créer l'application suivante</h1>
Signé < span>dans comme {session.user.email}
</h2>