Saltar al contenido
← Volver al blog
appsseguridad

¿El login de Lovable te manda a localhost? Cómo arreglarlo

Por qué el inicio de sesión, la confirmación y el restablecimiento de contraseña de tu app de Lovable terminan en localhost o en la vista previa, y qué ajustar.

Por Equipo Devonauts6 min de lectura
Read in English →
Flechas blancas de dirección pintadas en una calle de asfalto vacía con luz de la tarde

Si después de iniciar sesión tu app de Lovable manda a la gente a localhost o a la dirección vieja de la vista previa, casi nunca es culpa de tus pantallas: es la configuración de autenticación. El sistema de login (el de Supabase, que es el que usa Lovable) envía al usuario al Site URL cada vez que la dirección que pidió tu app no está en la lista de Redirect URLs permitidas, y un proyecto nuevo de Supabase arranca con http://localhost:3000 como Site URL. Pon tu dominio real en el Site URL, agrega todas tus direcciones a la lista y, si usas credenciales propias de Google, actualízalas también.

En esta guía vas a ver cómo identificar qué enlace falla, dónde están esos dos ajustes según cómo esté armado el backend de tu proyecto, qué código puede saltárselos y cómo comprobar el arreglo antes de que lo note un cliente.

¿Por qué el login vuelve a localhost o a la vista previa?

Todo flujo que sale de tu app y vuelve (confirmar el correo, enlace mágico, restablecer contraseña, entrar con Google o Apple) necesita saber a dónde regresar. Tu app propone una dirección con el valor redirectTo. El servidor de autenticación solo la respeta si coincide con alguna entrada de la lista permitida. Si no coincide, usa el Site URL.

Por eso hay tres fallas típicas:

  1. Nadie cambió el Site URL. Sigue diciendo http://localhost:3000 o la dirección lovable.app.
  2. Tu dominio nuevo no está en las Redirect URLs. La app pide https://tudominio.com/panel, el servidor lo rechaza y manda al Site URL.
  3. El código tiene una dirección fija. En algún prompt quedó escrito redirectTo: "https://mi-app.lovable.app" y todo apunta ahí, digan lo que digan los ajustes.

¿Qué tipo de backend usa tu proyecto?

Una app de Lovable guarda a sus usuarios en uno de dos lugares, y de eso depende quién mantiene estos ajustes al día.

Backend integrado (Lovable Cloud)Tu propio proyecto de Supabase
Dónde están los ajustesMore → Cloud → Users → Auth settings → AdvancedPanel de Supabase → Authentication → URL Configuration
Site URL al publicar por primera vezLovable pone tu dirección lovable.appLovable no lo toca
Dominio propioSe agrega solo a las Redirect URLs cuando el dominio queda LiveLo agregas tú
Un Site URL que escribiste a manoSe queda como lo dejasteSe queda como lo dejaste

La documentación de autenticación de Lovable lo describe así. Con Lovable Cloud, el problema suele venir de un Site URL editado a mano o de un dominio que aún no está Live. Con tu propio Supabase, nada cambia si no lo cambias tú.

¿Cómo sé qué enlace está mal?

  1. Haz el flujo tú mismo en una ventana privada: regístrate con un correo de prueba, pide restablecer la contraseña o entra con Google.
  2. En los correos, no hagas clic. Copia el enlace y pégalo en un editor de texto. Busca la parte redirect_to=: ahí es donde va a caer el usuario.
  3. Con Google o Apple, mira la barra de direcciones al volver. Si ves localhost:3000 o la vista previa, anótalo.
  4. Si Google muestra una página de error con redirect_uri_mismatch, el problema está del lado de Google. Ve directo a la sección de Google más abajo.

Si redirect_to ya muestra tu dominio y aun así terminas en localhost, falta el dominio en la lista permitida. Si redirect_to ya dice localhost, el origen es el Site URL o el código.

¿Cómo corrijo el Site URL y las Redirect URLs?

En Lovable Cloud

Abre More → Cloud → Users → Auth settings → Advanced. Pon como Site URL tu dominio principal, por ejemplo https://tudominio.com, y revisa que la lista de Redirect URLs incluya:

  • https://tudominio.com/**
  • https://www.tudominio.com/** si también sirves la versión con www
  • tu dirección lovable.app, si quieres que el login siga funcionando ahí

También puedes pedirle a Lovable en el chat del proyecto que agregue tu dominio a las URL de redirección. En cualquier caso, confirma el resultado en esa pantalla.

En tu propio proyecto de Supabase

En el panel de Supabase entra a Authentication y luego a URL Configuration. Cambia el Site URL de http://localhost:3000 a tu dominio de producción y agrega las mismas Redirect URLs.

Ojo con los comodines, según la guía de Supabase sobre redirect URLs: * coincide con caracteres hasta el siguiente . o /, mientras que ** coincide con todo, incluidas rutas más profundas. https://tudominio.com/* permite /login pero no /auth/callback. Para tu dominio usa /** y, cuando puedas, entradas exactas.

¿El código puede estar ignorando los ajustes?

Sí, y conviene revisarlo aunque los ajustes ya estén bien. Abre el código (en la vista Code de Lovable o en tu copia de GitHub) y busca localhost, lovable.app y redirectTo. Estas son las llamadas que importan:

supabase.auth.signUp({ email, password, options: { emailRedirectTo: `${window.location.origin}/bienvenida` } })
supabase.auth.resetPasswordForEmail(email, { redirectTo: `${window.location.origin}/nueva-contrasena` })
supabase.auth.signInWithOAuth({ provider: "google", options: { redirectTo: window.location.origin } })

Con window.location.origin, la app siempre pide volver a la dirección en la que está el usuario. Una dirección de vista previa escrita a mano en cualquiera de estas llamadas va a seguir mandando gente a la vista previa.

Si personalizaste las plantillas de correo, revisa también que el enlace use {{ .RedirectTo }} y no {{ .SiteURL }}; si no, el correo ignora la dirección que pidió tu app.

¿Y el inicio de sesión con Google?

Si Google está en modo "Managed by Lovable", Lovable se encarga de esa parte. Si usas tus propias credenciales de Google, Google también tiene que confiar en la nueva dirección:

  • En Lovable Cloud, Lovable muestra la URL de redirección de tu dominio en More → Cloud → Users → Auth settings → Google, pero no la marca. Agrégala como Authorized redirect URI en Google Cloud Console, márcala en Lovable y guarda.
  • En tu propio Supabase, la URI autorizada en Google es la de Supabase, https://<ref-del-proyecto>.supabase.co/auth/v1/callback. El regreso a tu dominio lo controlan las Redirect URLs de Supabase, no Google.

Google compara el texto exacto: una barra final de más o http en lugar de https basta para que falle.

¿Cómo compruebo que quedó bien?

Prueba en una ventana privada y desde cero:

  1. Regístrate con un correo nuevo y abre el enlace de confirmación. Debes llegar a tu dominio.
  2. Pide restablecer la contraseña y completa el proceso.
  3. Entra con Google (u otro proveedor que ofrezcas) y cierra sesión.
  4. Repite una vez desde el celular, donde las sesiones guardadas suelen esconder problemas.

Los correos enviados antes del arreglo siguen teniendo el enlace viejo. Pide a los usuarios afectados que soliciten uno nuevo.

¿Cómo evito que vuelva a pasar?

  • Elige un solo dominio principal. Lovable redirige los demás dominios conectados al principal; usa esa misma dirección como Site URL.
  • Ten una lista para cada cambio de dominio: Site URL, Redirect URLs, URI de Google o Apple, y cualquier enlace de pagos o correos que incluya la dirección.
  • Prohíbe las direcciones fijas en el conocimiento del proyecto: "Arma siempre las URL de redirección con window.location.origin."

El resto de los pasos para salir con tu dominio están en la guía para poner un dominio propio en tu app de Lovable o Bolt, y el problema hermano de los correos, en cómo enviar correos desde una app de Lovable.

Respuestas rápidas

¿Por qué el login funciona en la vista previa y no en mi dominio? Porque la vista previa ya está permitida y tu dominio no. Agrégalo a las Redirect URLs y revisa el Site URL.

¿Tengo que tocar el código? Solo si tiene una dirección fija. Busca localhost y lovable.app y cámbialos por window.location.origin.

¿Qué significa redirect_uri_mismatch? Que usas credenciales propias de Google y la URI exacta no está autorizada en Google Cloud Console.

¿Sigue rebotando al lugar equivocado?

Si los ajustes se ven bien y la gente sigue cayendo donde no debe, seguramente hay un segundo problema en el código, como una página de retorno que nunca lee la sesión. Haz el chequeo gratuito de tu app, mira cómo arreglamos apps de Lovable o cuéntanos qué pasa: una persona te responde en un día hábil.

¿Tu app sigue trabada?

Pasa el chequeo gratis con la URL de tu app, o pide la Auditoría de rescate de $299: un ingeniero senior revisa el código y te envía un informe escrito en 2 días hábiles.