En esta guía, aprenderá cómo autenticar usuarios en una aplicación Astro usando Better Auth. Pasará por el proceso de configuración de un nuevo proyecto Astro, habilitando la representación del lado del servidor usando el adaptador Vercel e integrando [Better Auth](https: //wwwbetter-authcom) para autenticar usuarios sin problemas
Requisitos previos
Necesitará lo siguiente:
Tabla de contenido
- Crear una nueva aplicación Astro
- [Integra el adaptador Vercel en tu proyecto Astro](#integra el adaptador-vercel-en-tu-proyecto-astro)
- Crear un proyecto Neon (Postgres sin servidor)
- Integra Better Auth en tu proyecto Astro
- Instalar dependencias relevantes
- Configurar definiciones de tipo
- Cargar variables de entorno
- Crear archivos auxiliares para usar Better Auth
- Crear esquema relevante en la base de datos
- Definir una ruta API de autenticación general
- Interceptar todas las solicitudes entrantes utilizando el middleware Astro
- Crear la ruta del índice
- Crear una página de inicio de sesión
- Crear una página de registro
- Implementar en Vercel
Crea una nueva aplicación Astro
Comencemos creando un nuevo proyecto Astro. Ejecute el siguiente comando:
npm create astro
es la forma recomendada de desarrollar rápidamente un proyecto Astro
Cuando se le solicite, elija:
Empty
cuando se le pregunta cómo iniciar el nuevo proyectoSí
cuando se le pregunte si planea escribir TypecriptEstricto
cuando se le pregunta qué tan estricto debe ser Typecript.Sí
cuando se le solicita instalar dependenciasSí
cuando se le solicita inicializar un repositorio de git
Una vez hecho esto, puede ir al directorio del proyecto e iniciar la aplicación:
La aplicación debería estar ejecutándose en localhost:4321
Ahora, pasemos a habilitar la renderización del lado del servidor en su aplicación Astro.
Integre el adaptador Vercel en su proyecto Astro
Para autenticar y mantener sesiones de usuario con Better Auth, habilitará la representación del lado del servidor en su proyecto Astro a través del adaptador Vercel. Ejecute el siguiente comando:
Cuando se le solicite, elija lo siguiente:
Sí
cuando se le pregunta si desea instalar las dependencias de VercelSí
cuando se le pregunta si desea realizar cambios en el archivo de configuración de Astro
Ha habilitado con éxito la renderización del lado del servidor en Astro.
Ahora, pasemos a poner en marcha un Postgres sin servidor como base de datos.
Crear un proyecto Neon (Postgres sin servidor)
Si aún no tiene uno, cree un proyecto Neon (Serverless Postgres) Guarde los detalles de su conexión, incluida su contraseña. Así es como lo haría:
1 Navegue a la página Proyectos en Neon Console
2 Haga clic en Nuevo proyecto
3 Especifique la configuración de su proyecto y haga clic en Crear proyecto
4 Cree un archivo env
en el directorio raíz de su proyecto Astro y defina una clave DATABASE_URL
con la cadena de conexión obtenida como valor.
Ahora, pasemos a configurar Better Auth en el proyecto Astro.
Integre Better Auth en su proyecto Astro
Instalar dependencias relevantes
Primero, ejecute el siguiente comando para instalar los paquetes necesarios para crear autenticación con Better Auth:
Los comandos anteriores instalan lo siguiente:
better-auth
: un marco de autenticación (y autorización) independiente del marco para TypeScriptpg
: Un cliente PostgreSQL para Nodejs-@types/pg
: definiciones de tipos para el paquetepg
dotenv-cli
: Un paquete para cargar archivos dotenv
Ahora, pasemos a configurar definiciones de tipo para el usuario y el objeto de sesión en su proyecto Astro.
Configurar definiciones de tipo
A continuación, configure definiciones de tipos para los objetos usuario
y sesión
en el archivo src/envdts
:
Ahora, pasemos a configurar el acceso universal a las variables de entorno.
Cargar variables de entorno
Actualice su packagejson
para usar siempre dotenv para cargar las variables de entorno de modo que sean accesibles a través de los objetos importmetaenv
y processenv
:
Finalmente, actualice el archivo env
para que tenga un valor aleatorio único para la clave BETTER_AUTH_SECRET
Ahora, pasemos a crear archivos de utilidad para acceder a Better Auth en su aplicación Astro.
Crear archivos auxiliares para usar Better Auth
Creará dos archivos de utilidad, src/authts
y src/auth-clientts
para acceder a Better Auth en el lado del servidor y del lado del cliente, respectivamente.
En src/authts
(código a continuación), usará un Pool
para conectarse a su instancia de Postgres para conservar las sesiones y el objeto de usuario en la base de datos, y habilitar la autenticación de correo electrónico y contraseña.
En src/auth-clientts
(código a continuación), está creando una nueva instancia de mejor autenticación para usar en las interacciones del lado del cliente.
Crear esquema relevante en la base de datos
Para crear el esquema según su configuración definida en el archivo src/authts
en su base de datos automáticamente, ejecute el siguiente comando:
Ahora, pasemos a definir una ruta API que le permita autenticar usuarios.
Definir una ruta API de autenticación general
Better Auth hace el trabajo pesado de crear y administrar la lógica de validación de credenciales, crear (o actualizar) el usuario y los objetos de sesión relevantes en la base de datos. Solo necesita crear una ruta API general en su proyecto Astro de la siguiente manera en el Archivo src/pages/api/auth/[all]ts
:
Ahora, pasemos a crear un middleware que actualice dinámicamente el usuario y el objeto de sesión al que se accederá globalmente.
Intercepta todas las solicitudes entrantes utilizando el middleware Astro
Para asegurarse de que cada solicitud mantenga un usuario y que la información de la sesión sea accesible a través de los puntos finales del lado del servidor y en las páginas “astro” durante la representación del lado del servidor, creará un middleware que utilice Better Auth para decodificar/codificar una sesión de usuario. de la galleta
Cree un archivo middlewarets
en el directorio src
con el siguiente código:
El código se asegura de marcar tanto el usuario como la sesión como nulos de forma predeterminada y asignar los valores respectivos obtenidos de la base de datos utilizando las cookies relevantes de la solicitud. Esto le permite saber siempre el estado correcto de autenticación del usuario.
Ahora, pasemos a crear la ruta de índice de su aplicación Astro.
Crear la ruta de índice
Cree un archivo indexastro
dentro del directorio src/pages
con el siguiente código:
El código anterior hace lo siguiente:
- Redirige al usuario a la página de inicio de sesión si el usuario no está autenticado
- Muestra la información almacenada en el objeto
usuario
perteneciente al usuario autenticado - Muestra un botón de cierre de sesión que, al hacer clic, invoca la utilidad “cerrar sesión” de Better Auth para cerrar la sesión del usuario.
Ahora, pasemos a crear una ruta de inicio de sesión en su aplicación Astro.
Crear una página de inicio de sesión
Cree un archivo signinastro
dentro del directorio src/pages
con el siguiente código:
El código anterior hace lo siguiente:
- Redirige al usuario a la página de índice si el usuario ya está autenticado
- Crea un formulario de inicio de sesión y adjunta el detector de eventos de envío.
- Intenta iniciar sesión como usuario utilizando el correo electrónico y la contraseña proporcionados
Ahora, pasemos a crear una ruta de registro en su aplicación Astro.
Crear una página de registro
Crear un registroarchivo astro
dentro del directorio src/pages
con el siguiente código:
El código anterior hace lo siguiente:
- Redirige al usuario a la página de índice si el usuario ya está autenticado
- Crea un formulario de registro y adjunta el detector de eventos de envío.
- Intenta registrar al usuario utilizando el nombre, correo electrónico y contraseña proporcionados
Ahora, implementemos la aplicación en Vercel.
Implementar en Vercel
El código ahora está listo para implementarse en Vercel. Utilice los siguientes pasos para implementarlo:
- Comience creando un repositorio de GitHub que contenga el código de su aplicación.
- Luego, navegue hasta el Panel de Vercel y cree un Nuevo proyecto
- Vincula el nuevo proyecto al repositorio de GitHub que acabas de crear
- En Configuración, actualice las Variables de entorno para que coincidan con las de su archivo
env
local - ¡Desplegar! 🚀
Referencias
- Repositorio de GitHub
- [Mejor documentación de Auth Astro] (https://wwwbetter-authcom/docs/integrations/astro)
Conclusión
En esta guía, habilitó la autenticación de usuario mediante el método de credenciales con la ayuda de Better Auth en una aplicación Astro. También adquirió algo de experiencia en el uso de middleware en Astro y comprendió cómo puede ayudarlo a crear interfaces de usuario dinámicas.
Si tiene alguna pregunta o comentario, no dude en comunicarse conmigo en Twitter