import {PdfDocument} from "@ironsoftware/ironpdf";
(async () => {
// Create a PDF from an HTML string
const pdf = await PdfDocument.fromHtml("<h1>Hello World</h1>");
// Export the PDF to a file
await pdf.saveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external HTML assets: Images, CSS, and JavaScript.
const htmlContentWithAssets = "<img src='icons/iron.png'>";
const advancedPdf = await PdfDocument.fromHtml(htmlContentWithAssets);
// Save the PDF with loaded assets
await advancedPdf.saveAs("html-with-assets.pdf");
})();
next-auth NPM (Comment ça fonctionne pour les développeurs)
Regan Pun
décembre 15, 2024
Partager:
Introduction
L'authentification est essentielle pour les applications web modernes, garantissant que les utilisateurs peuvent accéder en toute sécurité à leurs données et fonctionnalités, et offre un soutien d'infrastructure. NextAuth.js est une bibliothèque d'authentification puissante et flexible conçue pour fonctionner parfaitement avec Next.js. Cet article explorera comment configurer et utiliser NextAuth.js dans un projet Next.js afin que vous puissiez protéger les données des utilisateurs facilement. Nous vous montrerons également comment cet npm peut être intégré à d'autres bibliothèques telles que la bibliothèque IronPDF pour une authentification intuitive et sans état pour vos projets.
Qu'est-ce que NextAuth.js ?
NextAuth.js est une bibliothèque d'authentification open-source pour les applications Next.js qui offre un moyen flexible et sécurisé de mettre en œuvre l'authentification dans les applications web. Avec NextAuth.js, les développeurs peuvent facilement intégrer l'authentification dans leurs projets Next.js sans avoir à gérer les complexités de l'authentification des utilisateurs et de la gestion des sessions.
Le package est hautement configurable, permettant aux développeurs de personnaliser les flux d'authentification, de sécuriser les routes API et de gérer les sessions utilisateur de manière fluide. Avec des fonctionnalités améliorées qui vous permettent de créer vos propres procédures pour gérer l'accès aux comptes, chiffrer et décoder les JSON Web Tokens, et établir des politiques de sécurité des cookies sur mesure ainsi que des attributs de session, ce qui vous permet de réguler l'accès aux comptes et la fréquence de vérification des sessions.
Pourquoi choisir NextAuth.js ?
NextAuth.js offre plusieurs avantages :
Facilité d'utilisation : Installation simple avec un minimum de configuration.
Flexibilité : Prend en charge divers fournisseurs d'authentification, y compris OAuth, email/mot de passe, et plus encore.
Sécurité : Fonctions de sécurité intégrées pour protéger les données des utilisateurs dans votre propre base de données.
Extensibilité : Facilement extensible pour répondre aux besoins d'authentification personnalisés.
Commencer avec le npm Next Auth
Tout d'abord, créons un nouveau projet Next.js. Ouvrez votre terminal et exécutez :
npx create-next-app@latest my-next-auth-app
cd my-next-auth-app
Ensuite, installez NextAuth.js :
npm install next-auth
Configuration de NextAuth.js
Créez un nouveau fichier pour votre route API afin de gérer l'authentification. Dans le répertoire 'pages/api/auth', créez ce qui suit[...nextauth]fichier .js :
Créez un fichier '.env.local' à la racine de votre projet pour stocker vos variables d'environnement :
// Just make sure to fill out the variables with your actual information!
GITHUB_ID=your_github_client_id
GITHUB_SECRET=your_github_client_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
NEXTAUTH_SECRET=your_nextauth_secret
Ajout d'authentification à votre application
Maintenant, ajoutons l'authentification à votre application. Créez un bouton de connexion et un composant de profil pour afficher les informations de l'utilisateur.
// components/LoginButton.js
import { signIn, signOut, useSession } from 'next-auth/react';
const LoginButton = () => {
const { data: session, status } = useSession();
const loading = status === "loading";
return (
<div>
{!session && (
<>
<button onClick={() => signIn('github')}>Sign in with GitHub</button>
<button onClick={() => signIn('google')}>Sign in with Google</button>
</>
)}
{session && (
<>
<p>Signed in as {session.user.email}</p>
<button onClick={() => signOut()}>Sign out</button>
</>
)}
</div>
);
};
export default LoginButton;
// components/LoginButton.js
import { signIn, signOut, useSession } from 'next-auth/react';
const LoginButton = () => {
const { data: session, status } = useSession();
const loading = status === "loading";
return (
<div>
{!session && (
<>
<button onClick={() => signIn('github')}>Sign in with GitHub</button>
<button onClick={() => signIn('google')}>Sign in with Google</button>
</>
)}
{session && (
<>
<p>Signed in as {session.user.email}</p>
<button onClick={() => signOut()}>Sign out</button>
</>
)}
</div>
);
};
export default LoginButton;
JAVASCRIPT
Explication du code
Le composant LoginButton gère l'authentification des utilisateurs dans une application Next.js en utilisant NextAuth.js. Il utilise le hook useSession pour déterminer si un utilisateur est connecté. Si l'utilisateur n'est pas authentifié, des boutons s'affichent lui permettant de se connecter avec GitHub ou Google. Si l'utilisateur est authentifié, un message s'affiche avec son e-mail et un bouton pour se déconnecter. Ce composant fournit une interface simple pour gérer les actions de connexion et de déconnexion des utilisateurs en manipulant un objet session.
Protection des itinéraires
Pour protéger les routes et s'assurer que seuls les utilisateurs authentifiés peuvent accéder à certaines pages, utilisez la fonction getSession de NextAuth.js.
// pages/protected.js
import { getSession } from 'next-auth/react';
const ProtectedPage = ({ session }) => {
if (!session) {
return <p>You need to be authenticated to view this page.</p>;
}
return <p>Welcome, {session.user.email}!</p>;
};
export async function getServerSideProps(context) {
const session = await getSession(context);
return {
props: { session },
};
}
export default ProtectedPage;
// pages/protected.js
import { getSession } from 'next-auth/react';
const ProtectedPage = ({ session }) => {
if (!session) {
return <p>You need to be authenticated to view this page.</p>;
}
return <p>Welcome, {session.user.email}!</p>;
};
export async function getServerSideProps(context) {
const session = await getSession(context);
return {
props: { session },
};
}
export default ProtectedPage;
JAVASCRIPT
Explication du code
Le composant ProtectedPage dans une application Next.js utilise NextAuth.js pour restreindre l'accès aux seuls utilisateurs authentifiés. Il récupère les propriétés de session de l'utilisateur côté serveur en utilisant getServerSideProps et les passe comme propriété au composant. Si l'utilisateur n'est pas authentifié, la page affiche un message indiquant que l'authentification est requise. Si l'utilisateur est authentifié, il le salue en affichant son adresse e-mail. Cette configuration garantit que seuls les utilisateurs connectés peuvent accéder au contenu de la page.
Présentation d'IronPDF
IronPDFest une bibliothèque PDF puissante pour node.js qui permet aux développeurs de générer et d'éditer des PDFs dans leurs projets node.js. Que vous ayez besoin de créer des PDF à partir de HTML, de manipuler des PDF existants ou de convertir des pages web au format PDF, IronPDF a tout prévu.
Caractéristiques principales
Conversion de HTML en PDF
Convertissez sans effort du contenu HTML en documents PDF. Cette fonction est particulièrement utile pour générer des PDF dynamiques à partir de contenus web.
Conversion d'URL en PDF
Générez des PDF directement à partir d'URL, ce qui vous permet de capturer le contenu de pages web et de les enregistrer sous forme de fichiers PDF de manière programmatique.
Manipulation des PDF
Fusionnez, divisez et manipulez facilement des documents PDF existants. IronPDF offre des fonctionnalités telles que l'ajout de pages, la division de documents, etc.
Sécurité PDF
Sécurisez vos documents PDF en les chiffrant avec des mots de passe ou en appliquant des signatures numériques. IronPDF propose des options pour protéger vos documents sensibles contre les accès non autorisés.
Sortie de haute qualité
Produisez des documents PDF de haute qualité avec un rendu précis du texte, des images et de la mise en forme. IronPDF veille à ce que les PDF générés restent fidèles au contenu original.
Compatibilité multiplateforme
IronPDF est compatible avec diverses plateformes, notamment Windows, Linux et macOS, ce qui le rend adapté à un large éventail d'environnements de développement.
Intégration simple
Intégrez facilement IronPDF à vos applications Node.js à l'aide de son package npm. L'API est bien documentée, ce qui facilite l'intégration des capacités de génération de PDF dans vos projets.
Installation
Pour installer leIronPDFpackage, utilisez la commande suivante :
API de génération de PDF : La première étape consiste à créer une API pour générer le document PDF. Étant donné qu'IronPDF fonctionne uniquement côté serveur, nous devons créer une API à appeler lorsque l'utilisateur souhaite générer un PDF. Créez un fichier dans le chemin pages/api/pdf.js et ajoutez le contenu ci-dessous :
// pages/api/pdf.js
import { IronPdf } from "@ironsoftware/ironpdf";
import { format } from 'date-fns'; // Import the format function for date formatting
// Apply your IronPDF license key
IronPdf.GlobalSettings.LicenseKey = "Your license key goes here";
export default async function handler(req, res) {
try {
const currentDate = new Date();
const formattedDate = format(currentDate, 'MMMM do, yyyy');
let content = "<h1>Demo React Hook Form and Generate PDF Using IronPDF</h1>";
content += `<p>Date: ${currentDate}</p>`;
content += `<p>Formatted Date: ${formattedDate}</p>`;
const pdf = await IronPdf.HtmlToPdfDocument({ htmlContent: content });
const data = await pdf.toBuffer();
res.setHeader("Content-Type", "application/pdf");
res.setHeader(
"Content-Disposition",
"attachment; filename=awesomeIron.pdf"
);
res.send(data);
} catch (error) {
console.error("Error generating PDF:", error);
res.status(500).end();
}
}
// pages/api/pdf.js
import { IronPdf } from "@ironsoftware/ironpdf";
import { format } from 'date-fns'; // Import the format function for date formatting
// Apply your IronPDF license key
IronPdf.GlobalSettings.LicenseKey = "Your license key goes here";
export default async function handler(req, res) {
try {
const currentDate = new Date();
const formattedDate = format(currentDate, 'MMMM do, yyyy');
let content = "<h1>Demo React Hook Form and Generate PDF Using IronPDF</h1>";
content += `<p>Date: ${currentDate}</p>`;
content += `<p>Formatted Date: ${formattedDate}</p>`;
const pdf = await IronPdf.HtmlToPdfDocument({ htmlContent: content });
const data = await pdf.toBuffer();
res.setHeader("Content-Type", "application/pdf");
res.setHeader(
"Content-Disposition",
"attachment; filename=awesomeIron.pdf"
);
res.send(data);
} catch (error) {
console.error("Error generating PDF:", error);
res.status(500).end();
}
}
JAVASCRIPT
Cela crée une route API Next.js qui génère un fichier PDF en utilisant la bibliothèque IronPDF. Il crée une chaîne HTML contenant un en-tête et la date actuelle, formate la date à l'aide de date-fns, et convertit le HTML en PDF. Le PDF généré est ensuite renvoyé en tant que fichier téléchargeable dans la réponse. Cette approche permet la génération dynamique de PDF dans un environnement côté serveur, ce qui la rend utile pour créer des rapports, des factures ou d'autres documents à la volée.
Ajoutons maintenant une connexion GIT à notre site web frontal en utilisant Next-Auth. Pour cela, nous devons obtenir l'ID Git de l'utilisateur et le secret. Connectez-vous à votre compte Git et accédez aux paramètres du développeur comme suit :
Cliquez sur New GitHub App et ajoutez les détails de votre site web :
Stockez l'ID d'application et l'ID client en lieu sûr. Ensuite, créez un fichier .env.local à la racine de votre projet pour stocker vos variables d'environnement :
// Here you can use the App and Client ID you just got from GitHub
GITHUB_ID=your_github_client_id
GITHUB_SECRET=your_github_client_secret
NEXTAUTH_SECRET=secret
Créez un nouveau fichier pour votre route API afin de gérer l'authentification. Dans le répertoire pages/api/auth, créez un [...nextauth]fichier .js comme suit :
N'oubliez pas de placer la clé de licence que vous recevez au début de votre code comme ceci :
import {IronPdfGlobalConfig, PdfDocument} from "@ironsoftware/ironpdf";
// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Add Your key here";
import {IronPdfGlobalConfig, PdfDocument} from "@ironsoftware/ironpdf";
// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Add Your key here";
JAVASCRIPT
Conclusion
À la fin, NextAuth.js simplifie le processus d'ajout d'authentification à vos applications Next.js. Avec le support de plusieurs fournisseurs et des fonctionnalités de sécurité robustes, c'est un excellent choix pour gérer l'authentification des utilisateurs. Vous pouvez toujours explorer la documentation de NextAuth.js pour des configurations et fonctionnalités plus avancées. De plus, IronPDF Node.js offre des capacités robustes de génération et de manipulation de PDF à votre application et s'intègre bien au développement d'applications modernes.
Regan est diplômé de l'université de Reading, où il a obtenu une licence en ingénierie électronique. Avant de rejoindre Iron Software, il s'était concentré sur une seule tâche. Ce qu'il apprécie le plus chez Iron Software, c'est la diversité des tâches qu'il peut accomplir, qu'il s'agisse d'apporter une valeur ajoutée aux ventes, à l'assistance technique, au développement de produits ou à la commercialisation. Il aime comprendre comment les développeurs utilisent la bibliothèque d'Iron Software et utiliser ces connaissances pour améliorer continuellement la documentation et développer les produits.
< PRÉCÉDENT linkify-react (Comment ça fonctionne : un guide pour les développeurs)
SUIVANT > NPM fuse-box (Comment ça marche pour les développeurs)
Vous avez une question ? Prendre contact avec notre équipe de développement.
Vous avez une question ? Contactez notre équipe de développement.
Commencez GRATUITEMENT
Aucune carte de crédit n'est requise
Test dans un environnement réel
Testez en production sans filigranes. Fonctionne là où vous en avez besoin.
Produit entièrement fonctionnel
Obtenez 30 jours de produit entièrement fonctionnel. Faites-le fonctionner en quelques minutes.
assistance technique 24/5
Accès complet à notre équipe d'ingénieurs pendant la période d'essai du produit
Obtenez votre clé d'essai de 30 jours gratuite instantanément.
Aucune carte de crédit ou création de compte n'est nécessaire
Le formulaire d'essai a été soumis avec succès.
Votre clé d'essai devrait être dans l'e-mail. Si ce n'est pas le cas, veuillez contacter support@ironsoftware.com
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier