CommunityProgramación y desarrollogithub.com

better-auth/better-auth-mejores-prácticas

Configura el servidor y cliente de Better Auth, adaptadores de base de datos, sesiones, plugins y variables de entorno. Úsalo cuando los usuarios mencionen Better Auth, betterauth, auth.ts o necesiten configurar autenticación TypeScript con correo/contraseña, OAuth o plugins.

¿Qué es better-auth-mejores-prácticas?

Esta skill guía a los desarrolladores en la implementación y configuración de Better Auth, una biblioteca moderna de autenticación para TypeScript. Proporciona pasos claros para configurar tanto el servidor como el cliente, incluyendo la selección e integración de adaptadores de base de datos (como Prisma, Drizzle, MongoDB, etc.) y la gestión de sesiones de usuario. También cubre la adición de plugins esenciales (como magic links, OAuth de terceros, verificación de email, etc.) y el manejo seguro de variables de entorno. Es especialmente útil cuando se mencionan conceptos como 'better-auth', 'auth.ts', o se necesita implementar autenticación con email/contraseña, OAuth o cualquier otra configuración avanzada de plugins. Está diseñada para entornos Node.js con TypeScript y frameworks como Next.js, Express o cualquier otro que soporte el ecosistema de Better Auth.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/better-auth/skills/tree/main/skills/better-auth-best-practices

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace better-auth-mejores-prácticas?

Configura el servidor y cliente de Better Auth, adaptadores de base de datos, sesiones, plugins y variables de entorno. Úsalo cuando los usuarios mencionen Better Auth, betterauth, auth.ts o necesiten configurar autenticación TypeScript con correo/contraseña, OAuth o plugins.

Configuración del servidor

Crea un archivo auth.ts en la raíz de tu proyecto:

import { betterAuth } from "better-auth";
import { prismaAdapter } from "better-auth/adapters/prisma";
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

export const auth = betterAuth({
  database: prismaAdapter(prisma, {
    provider: "sqlite", // o "postgresql", "mysql", etc.
  }),
  emailAndPassword: {
    enabled: true,
  },
  socialProviders: {
    google: {
      clientId: process.env.GOOGLE_CLIENT_ID!,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
    },
  },
  plugins: [],
});

Variables de entorno

Crea un archivo .env.local con:

BETTER_AUTH_SECRET="tu-secreto-aqui"
BETTER_AUTH_URL="http://localhost:3000"
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""

Configuración del cliente

En tu aplicación frontend (por ejemplo, en lib/auth-client.ts):

import { createAuthClient } from "better-auth/client";

export const authClient = createAuthClient({
  baseURL: process.env.BETTER_AUTH_URL,
});

Uso básico

Iniciar sesión

const { data } = await authClient.signIn.email({
  email: "[email protected]",
  password: "password123",
});

Registrar usuario

const { data } = await authClient.signUp.email({
  email: "[email protected]",
  password: "password123",
  name: "Juan Pérez",
});

Cerrar sesión

await authClient.signOut();

Obtener sesión actual

const session = await authClient.getSession();

Adaptadores de base de datos

Better Auth soporta múltiples adaptadores. Ejemplo con Drizzle:

import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { db } from "./db";

export const auth = betterAuth({
  database: drizzleAdapter(db, {
    provider: "pg", // o "mysql", "sqlite"
  }),
});

Otros adaptadores incluyen:

  • Prisma (better-auth/adapters/prisma)
  • Drizzle (better-auth/adapters/drizzle)
  • MongoDB (better-auth/adapters/mongodb)
  • Kysely (better-auth/adapters/kysely)

Plugins

Agrega plugins para funcionalidades adicionales:

import { magicLink } from "better-auth/plugins/magic-link";
import { emailOTP } from "better-auth/plugins/email-otp";

export const auth = betterAuth({
  plugins: [
    magicLink(),
    emailOTP(),
  ],
});

Manejo de sesiones

Proteger rutas

import { auth } from "./auth";

export async function handler(request: Request) {
  const session = await auth.api.getSession({
    headers: request.headers,
  });

  if (!session) {
    return new Response("No autorizado", { status: 401 });
  }

  return new Response("Bienvenido");
}

Buenas prácticas

  1. Usa variables de entorno: nunca hardcodees secretos.
  2. Configura el adaptador correcto: asegúrate de que coincida con tu base de datos.
  3. Protege las rutas: siempre verifica la sesión en endpoints sensibles.
  4. Usa HTTPS en producción: las cookies de sesión deben ser seguras.
  5. Mantén los plugins actualizados: revisa la documentación oficial para nuevas versiones.

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

Skills relacionados