Questa libreria ti consente di integrare perfettamente l'autenticazione di Google nella tua applicazione Next.js, eliminando la necessità di svilupparla da zero.
L'integrazione di un sistema di autenticazione sicuro è una fase di sviluppo cruciale che non solo fornisce un ambiente sicuro per gli utenti, ma infonde anche fiducia nel tuo prodotto. Questo sistema garantisce che i loro dati siano protetti e che solo le persone autorizzate possano accedere all'applicazione.
La creazione di un'autenticazione sicura da zero può essere un processo dispendioso in termini di tempo che richiede un'analisi approfondita comprensione dei protocolli e dei processi di autenticazione, soprattutto quando si gestiscono autenticazioni diverse fornitori.
Utilizzando NextAuth, puoi spostare la tua attenzione sulla creazione delle funzionalità principali. Continua a leggere per sapere come integrare l'accesso social di Google nella tua applicazione utilizzando NextAuth.
Come funziona NextAuth
SuccessivoAuth.js è una libreria di autenticazione open source che semplifica il processo di aggiunta
autenticazione e autorizzazione funzionalità alle applicazioni Next.js e personalizzazione dei flussi di lavoro di autenticazione. Fornisce una gamma di funzionalità come e-mail, autenticazione senza password e supporto per vari provider di autenticazione come Google, GitHub e altri.Ad alto livello, NextAuth funge da middleware, facilitando il processo di autenticazione tra la tua applicazione e il provider. Sotto il cofano, quando un utente tenta di accedere, viene reindirizzato alla pagina di accesso di Google. Dopo l'autenticazione, Google restituisce un payload che include i dati dell'utente, come il nome e l'indirizzo email. Questi dati vengono utilizzati per autorizzare l'accesso all'applicazione e alle sue risorse.
Utilizzando i dati del payload, NextAuth crea una sessione per ogni utente autenticato e archivia il token di sessione in un cookie solo HTTP sicuro. Il token di sessione viene utilizzato per verificare l'identità dell'utente e mantenere il suo stato di autenticazione. Questo processo si applica anche ad altri fornitori con lievi variazioni nell'implementazione.
Registra la tua applicazione Next.js su Google Developer Console
NextAuth fornisce supporto per il servizio di autenticazione di Google. Tuttavia, affinché la tua applicazione interagisca con le API di Google e consenta agli utenti di autenticarsi con le loro credenziali Google, dovrai registrare la tua app sulla console per sviluppatori di Google e ottenere un Identificativo cliente E Segreto del cliente.
Per farlo, vai a Console per gli sviluppatori di Google. Quindi, accedi con il tuo account Google per accedere alla console. Una volta effettuato l'accesso, crea un nuovo progetto.
Nella pagina della panoramica del progetto, seleziona il file API e servizi scheda dall'elenco dei servizi nel riquadro del menu a sinistra e, infine, il file Credenziali opzione.
Clicca sul Crea credenziali pulsante per generare l'ID client e il segreto client. Successivamente, specifica il tipo di applicazione dalle opzioni fornite e quindi fornisci un nome per la tua applicazione.
Successivamente, specifica l'URL della home route della tua app e infine specifica l'URI di reindirizzamento autorizzato per la tua applicazione. Per questo caso, dovrebbe essere http://localhost: 3000/api/auth/callback/google come specificato dalle impostazioni del provider Google di NextAuth.
Al termine della registrazione, Google ti fornirà un ID client e un segreto client da utilizzare nella tua app.
Configurare l'applicazione NextJS
Per iniziare, crea un progetto Next.js in locale:
npx create-next-app next-auth-app
Al termine dell'installazione, vai alla directory del progetto appena creata ed esegui questo comando per avviare il server di sviluppo.
npm esegue lo sviluppo
Apri il tuo browser e vai a http://localhost: 3000. Questo dovrebbe essere il risultato atteso.
Puoi trovare il codice di questo progetto nel suo file Deposito GitHub.
Impostazione del file .env
Nella cartella principale del tuo progetto, crea un nuovo file e assegnagli un nome .env per contenere l'ID cliente, il segreto e l'URL di base.
NEXT_PUBLIC_GOOGLE_CLIENT_ID= 'Identificativo cliente'
NEXT_PUBLIC_GOOGLE_CLIENT_SECRET= 'segreto'
NEXT_PUBLIC_NEXTAUTH_URL= ' http://localhost: 3000'
L'URL NextAUTH viene utilizzato per specificare l'URL di base dell'applicazione, utilizzato per reindirizzare gli utenti dopo il completamento dell'autenticazione.
Integra NextAuth nella tua applicazione Next.js
Innanzitutto, installa la libreria di NextAuth nel tuo progetto.
npm install next-auth
Successivamente, nel /pages directory, creare una nuova cartella e assegnarle un nome API. Cambia la directory in API folder e crea un'altra cartella chiamata aut. Nella cartella auth, aggiungi un nuovo file e assegnagli un nome [...nextauth].js e aggiungi le seguenti righe di codice.
importare AvantiAuth da"prossima-autenticazione/successiva";
importare Fornitore di Google da"prossima-autenticazione/provider/google";
esportarepredefinito ProssimaAuth({
fornitori:[
GoogleProvider({
ID cliente: processo.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID,
clientSecret: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_SECRET,
}),
]
});
Questo codice configura Google come provider di autenticazione. La funzione NextAuth definisce l'oggetto di configurazione del provider Google che accetta due proprietà: un ID client e un segreto client che inizializza il provider.
Quindi, apri il file pagine/_app.js file e apportare le seguenti modifiche al codice.
importare'../styles/globals.css'
importare { Fornitore di sessione } da"prossima autenticazione/reazione"
funzioneMiaApp({ Component, pageProps: { session, ...pageProps } }) {
ritorno (
</SessionProvider>
)
}
esportarepredefinito MiaApp
AvantiAuth's Fornitore di sessione Il componente fornisce funzionalità di gestione dello stato di autenticazione all'app Next.js. Ci vuole un sessione prop che contiene i dati della sessione di autenticazione restituiti dall'API di Google che include i dettagli dell'utente come ID, email e token di accesso.
Avvolgendo il MiaApp componente con il componente SessionProvider, viene reso disponibile l'oggetto della sessione di autenticazione con i dettagli dell'utente in tutta l'applicazione, consentendo all'applicazione di persistere e rendere le pagine in base al loro stato di autenticazione.
Configura il file index.js
Apri il pagine/index.js file, eliminare il codice boilerplate e aggiungere il codice seguente per creare un pulsante di accesso che indirizza gli utenti a una pagina di accesso.
importare Testa da'successivo/testa'
importare stili da'../stili/Home.module.css'
importare {usaRouter} da'prossimo/router';esportarepredefinitofunzioneCasa() {
cost router = usaRouter();
ritorno (
Crea la prossima app</title>
"description" content="Generato da crea la prossima app" />
"icon" href="/favicon.ico" />
</Head>
Benvenuto in " https://nextjs.org">Next.js!</a>
</h1>
Inizia accedendo{' ' }
con il tuo account Google</code>
</div>
)
}
Questo codice utilizza l'hook Next.js useRouter per gestire il routing all'interno dell'applicazione definendo un oggetto router. Quando si fa clic sul pulsante di accesso, la funzione del gestore chiama il metodo router.push per reindirizzare l'utente alla pagina di accesso.
Crea un'autenticazione di accesso Pagina
Nella directory pages, crea un nuovo file Login.js, quindi aggiungi le seguenti righe di codice.
importa { useSession, signIn, signOut } da "next-auth/react"
import { useRouter } da 'prossimo /router';
importa stili da '../styles/Login.module.css'export default function < span>Login() {
const { data: sessione } = useSession()
const router = useRouter();
if (sessione) {
return (
"title">Crea la prossima app</h1>
Firmato < span>in come {session.user.email}
</h2>