Supabase e Astro
Supabase è un’alternativa open source a Firebase. Fornisce un database Postgres, autenticazione, funzioni edge, sottoscrizioni in tempo reale e archiviazione.
Inizializzazione di Supabase in Astro
Sezione intitolata Inizializzazione di Supabase in AstroPrerequisiti
Sezione intitolata Prerequisiti- Un progetto Supabase. Se non ne hai uno, puoi registrarti gratuitamente su supabase.com e creare un nuovo progetto.
- Un progetto Astro con il rendering lato server (SSR) abilitato.
- Credenziali Supabase per il tuo progetto. Puoi trovarle nella scheda Settings > API del tuo progetto Supabase.
SUPABASE_URL
: L’URL del tuo progetto Supabase.SUPABASE_ANON_KEY
: La chiave anonima per il tuo progetto Supabase.
Aggiunta delle credenziali Supabase
Sezione intitolata Aggiunta delle credenziali SupabasePer aggiungere le tue credenziali Supabase al tuo progetto Astro, aggiungi quanto segue al tuo file .env
:
Ora, queste variabili d’ambiente sono disponibili nel tuo progetto.
Se desideri avere IntelliSense per le tue variabili d’ambiente, modifica o crea il file env.d.ts
nella tua directory src/
e aggiungi quanto segue:
Leggi di più sulle variabili d’ambiente e i file .env
in Astro.
Il tuo progetto dovrebbe ora includere questi file:
Directorysrc/
- env.d.ts
- .env
- astro.config.mjs
- package.json
Installazione delle dipendenze
Sezione intitolata Installazione delle dipendenzePer connetterti a Supabase, dovrai installare @supabase/supabase-js
nel tuo progetto.
Successivamente, crea una cartella chiamata lib
nella tua directory src/
. Qui aggiungerai il tuo client Supabase.
In supabase.ts
, aggiungi quanto segue per inizializzare il tuo client Supabase:
Ora, il tuo progetto dovrebbe includere questi file:
Directorysrc/
Directorylib/
- supabase.ts
- env.d.ts
- .env
- astro.config.mjs
- package.json
Aggiunta dell’autenticazione con Supabase
Sezione intitolata Aggiunta dell’autenticazione con SupabaseSupabase fornisce l’autenticazione out of the box. Supporta l’autenticazione email/password e l’autenticazione OAuth con molti provider, tra cui GitHub, Google e molti altri.
Prerequisiti
Sezione intitolata Prerequisiti- Un progetto Astro inizializzato con Supabase.
- Un progetto Supabase con l’autenticazione email/password abilitata. Puoi abilitarla nella scheda Authentication > Providers del tuo progetto Supabase.
Creazione degli endpoint server di autenticazione
Sezione intitolata Creazione degli endpoint server di autenticazionePer aggiungere l’autenticazione al tuo progetto, dovrai creare alcuni endpoint server. Questi endpoint verranno utilizzati per registrare, accedere e disconnettere gli utenti.
POST /api/auth/register
: per registrare un nuovo utente.POST /api/auth/signin
: per accedere come utente.GET /api/auth/signout
: per disconnettere un utente.
Crea questi endpoint nella directory src/pages/api/auth
del tuo progetto. Il tuo progetto dovrebbe ora includere questi nuovi file:
Directorysrc/
Directorylib/
- supabase.ts
Directorypages/
Directoryapi/
Directoryauth/
- signin.ts
- signout.ts
- register.ts
- env.d.ts
- .env
- astro.config.mjs
- package.json
register.ts
crea un nuovo utente in Supabase. Accetta una richiesta POST
con un’email e una password. Quindi utilizza l’SDK di Supabase per creare un nuovo utente.
signin.ts
accede come utente. Accetta una richiesta POST
con un’email e una password. Quindi utilizza l’SDK di Supabase per accedere come utente.
signout.ts
disconnette un utente. Accetta una richiesta GET
e rimuove i token di accesso e aggiornamento dell’utente.
Creazione delle pagine di autenticazione
Sezione intitolata Creazione delle pagine di autenticazioneOra che hai creato i tuoi endpoint server, crea le pagine che li utilizzeranno.
src/pages/register
: contiene un modulo per registrare un nuovo utente.src/pages/signin
: contiene un modulo per accedere come utente.src/pages/dashboard
: contiene una pagina accessibile solo agli utenti autenticati.
Crea queste pagine nella directory src/pages
. Il tuo progetto dovrebbe ora includere questi nuovi file:
Directorysrc/
Directorylib/
- supabase.ts
Directorypages/
Directoryapi/
Directoryauth/
- signin.ts
- signout.ts
- register.ts
- register.astro
- signin.astro
- dashboard.astro
- env.d.ts
- .env
- astro.config.mjs
- package.json
register.astro
contiene un modulo per registrare un nuovo utente. Accetta un’email e una password e invia una richiesta POST
a /api/auth/register
.
signin.astro
contiene un modulo per accedere come utente. Accetta un’email e una password e invia una richiesta POST
a /api/auth/signin
. Controlla anche la presenza dei token di accesso e aggiornamento. Se sono presenti, reindirizza alla dashboard.
dashboard.astro
contiene una pagina accessibile solo agli utenti autenticati. Controlla la presenza dei token di accesso e aggiornamento. Se non sono presenti, reindirizza alla pagina di accesso.
Aggiunta dell’autenticazione OAuth
Sezione intitolata Aggiunta dell’autenticazione OAuthPer aggiungere l’autenticazione OAuth al tuo progetto, dovrai modificare il tuo client Supabase per abilitare il flusso di autenticazione con "pkce"
. Puoi leggere di più sui flussi di autenticazione nella documentazione di Supabase.
Successivamente, nella dashboard di Supabase, abilita il provider OAuth che desideri utilizzare. Puoi trovare l’elenco dei provider supportati nella scheda Authentication > Providers del tuo progetto Supabase.
L’esempio seguente utilizza GitHub come provider OAuth. Per connettere il tuo progetto a GitHub, segui i passaggi nella documentazione di Supabase.
Quindi, crea un nuovo endpoint server per gestire il callback OAuth in src/pages/api/auth/callback.ts
. Questo endpoint verrà utilizzato per scambiare il codice OAuth con un token di accesso e aggiornamento.
Successivamente, modifica la pagina di accesso per includere un nuovo pulsante per accedere con il provider OAuth. Questo pulsante dovrebbe inviare una richiesta POST
a /api/auth/signin
con il provider
impostato sul nome del provider OAuth.
Infine, modifica l’endpoint server di accesso per gestire il provider OAuth. Se il provider
è presente, reindirizzerà al provider OAuth. Altrimenti, accederà all’utente con l’email e la password.
Dopo aver creato l’endpoint di callback OAuth e modificato la pagina e l’endpoint server di accesso, il tuo progetto dovrebbe avere la seguente struttura di file:
Directorysrc/
Directorylib/
- supabase.ts
Directorypages/
Directoryapi/
Directoryauth/
- signin.ts
- signout.ts
- register.ts
- callback.ts
- register.astro
- signin.astro
- dashboard.astro
- env.d.ts
- .env
- astro.config.mjs
- package.json
Risorse della Comunità
Sezione intitolata Risorse della Comunità- Entrare nello spirito delle feste con Astro, React e Supabase
- Demo di autenticazione Astro e Supabase