Prestashop 1.7 Admin login loop [actualizado 2024]

por | Ene 29, 2021 | Prestashop

Prestashop 1.7 Admin login loop

Si estás en el día de la marmota cuando intentas acceder al backoffice de tu tienda, entonces tienes un prestashop 1.7 Admin login loop. Te explico posibles soluciones para que puedas recuperar el acceso

Hace un tiempo hablé de diferentes problemáticas relacionadas con el acceso al backoffice. Si tu caso es alguna de éstas, sigue su enlace. Si no lo es, sigue leyendo:

  • Puede que tu backoffice deje de funcionar de golpe y tenga Fatal Error (aquí te explico cómo se soluciona)
  • Puede que al hacer login de administrador, sólo tengas pantalla en blanco y error (aquí te explico cómo se soluciona)
  • Puede que se salga del admin porque sí (aquí te explico cómo se soluciona)
  • Puede ser que haya un bucle de acceso (admin loop) (aquí te explico cómo se soluciona para 1.6)
  • Puede que tengas acceso denegado (aquí te explico cómo se soluciona)
  • Puede ser que tu web esté infectada por un ataque que afecte al admin login (lo explico más abajo).

Si tu prestashop es 1.7 y estás en un bucle de login, aún hay más cosas que puedes probar.

 

Prestashop 1.7 Admin login loop

Antes de nada

Antes de nada, dos cosas:

1.- Activa el Debug: activa el modo de depuración de errores por si hubiera algo que no estás viendo y fuera el responsable de tu login loop.

Con tu programa ftp favorito (por ejemplo Filezilla) ve al fichero /config/defines.inc.php y cambia

define('_PS_MODE_DEV_', false)

a

define('_PS_MODE_DEV_', true)

2.- Comprueba SSL: este dato, a estas alturas, ya no haría falta ni comentarlo, porque se supone que hace años que tu tienda debe estar funcionando en SSL, o, si es nueva, la tendrías que haber montado ya así. Pero comprueba siempre que tanto tu servidor como tu prestashop tienen activada la opción SSL. En este post explico cómo hacerlo. Si no están ambos en esa opción, al acceder entrarás en un bucle de redirección, así que, revísalo.

Cachés y cookies obvias

Las llamo así porque entiendo que es obvio que es lo primero que habrás probado. Vacía la caché de navegador, borra las cookies, cambia de ordenador si es necesario. Esto no siempre soluciona el problema, porque a veces el problema no es la caché del navegador sino la del propio prestashop, lo veremos más adelante.

Versión PHP

No está de más que eches un vistazo a la versión php de tu servidor y compruebes que se ajusta a esta tabla. Además de arreglar algunos casos de admin login loop, también mejorarás el rendimiento de la web.

Compatibilidad prestashop y PHP

Caché interna

Como no puedes acceder al backoffice, no puedes borrar de forma automática la caché de prestashop. Para hacerlo manualmente, localiza la carpeta /var/cache y simplemente renómbrala. Prestashop la volverá a crear sin problema, no te preocupes. Pero habrás vaciado la caché interna.

Si tu versión de prestashop 1.7 es más antigua, tu caché estará en app/cache/dev y app/cache/prod.

 

Desactiva cookies vía código

En el fichero classes/Cookie.php, comenta esta línea:

  && (!isset($this->_content['remote_addr']) || $this->_content['remote_addr'] == ip2long(Tools::getRemoteAddr()) || !Configuration::get('PS_COOKIE_CHECKIP'));

En el fichero /classes/controller/AdminController.php, aumenta el tiempo de duración de la cookie cambiando esta línea:

if ($this->context->cookie->last_activity + 900 < time()) {

por esta otra:

if ($this->context->cookie->last_activity + 3600 < time()) {

 

Problema ajax del servidor

Si el problema es que el servidor ha recibido un exceso de peticiones ajax, puedes encontrar una posible solución en la base de datos.

En la tabla ps_configuration, desactiva PS_COOKIE_CHECKIP. Antes, PS_COOKIE_CHECKIP=1, ahora PS_COOKIE_CHECKIP=0

 

Web infectada

Si tu web está infectada y lo han hecho bien, probablemente no te vas a enterar. Es decir, verás que no puedes salir del bucle de admin pero no vas a sospechar en ningún momento que sea porque alguien se ha colado en tu web por una puerta trasera.

Si nada de lo que he explicado en los apartados anteriores te funciona, comprueba que no sea el ataque tu caso:

  1. Mira qué versión de Prestashop tienes, ve a https://prestashop.es/versions/ y descarga la misma versión.
  2. En tu ordenador, descomprime el fichero que te has descargado y ve al fichero siguiente: /tu-ordenador/Prestashop/controllers/admin/AdminLoginController.php
  3. Desde un programa de acceso al sistema de ficheros de tu web, tipo FileZilla, o desde tu propio cPanel o Plesk de tu servidor, ve a la misma carpeta a localizar ese fichero. Comprueba si tienen el mismo tamaño. Probablemente no.
  4. Renombre ese fichero de tu servidor, por ejemplo, AdminLoginController.phpKO
  5. Sube el mismo fichero desde tu ordenador al servidor, con tu FileZilla o desde tu cpanel, como hayas estado haciendo hasta ahora.
  6. Vuelve a tu pantalla de acceso al backoffice y comprueba que ahora sí puedes entrar.
  7. Revisa también los ficheros FrontController.php y Controller.php
  8. Sobre todo, ten actualizado tu prestashop y, si por lo que sea no puedes en este momento, hazle esta modificación de seguridad, si es que no tienes un 1.7.8.8 o superior

 

Poco espacio en el servidor

Me he encontrado muchos casos en los que el servidor establece bloqueos de acceso a bases de datos o ficheros cuando el espacio libre es reducido o ya nulo. Es decir, si estáis a punto de sobrepasar el espacio de disco o el que tenéis asignado a las bases de datos, es posible que vuestro servidor tenga mecanismos de seguridad que, para evitar su saturación, bloquee accesos por ejemplo a bases de datos.

En ese caso, si bien vuestro front office puede estar funcionando aparentemente bien, el backoffice no. De hecho, si activáis el modo debug, veréis que vuestro front muestra errores de excepción de acceso prohibido a la base de datos.

En el caso del backoffice, parecerá que estamos en un admin loop, en un bucle, porque tras introducir los datos de acceso volverá a pedírnoslos. Sin embargo, si activamos aquí el debug, veremos que sí se está haciendo el login, de hecho entraremos en el backoffice, pero no se nos estará mostrando nada, excepto el logo de prestashop. Fijaos en la la url en la que estáis, veréis que aparece Dashboard (el backoffice). Así que no es un caso de admin loop propiamente, aunque el resultado es muy similar.

Solución

En este caso, liberad espacio en el servidor. Vaciar carpetas de caché, eliminad copias antiguas (comprimidlas primero), suprimir bases de datos que no utilicéis (haced también una copia antes si queréis conservarlas) y automáticamente el bloqueo desaparecerá y vuestro prestashop funcionará de forma normal.

Espero que te haya servido.

Si tienes un caso que no coincida con ninguno de los anteriores o que no hayas podido resolver de ninguna de estas maneras, escríbeme, disfrutaré mucho de poder ayudarte!

Y seguiré investigando y añadiendo a esta lista las posibles soluciones para el admin login loop de prestashop 1.7

Mucha suerte y mucho ecommerce 🙂

Rating: 5.0/5. From 19 votes.
Please wait...

Centro de preferencias de privacidad

Necesarias

Se usan para saber si ya aceptaste nuestras políticas, si ya estás suscrito a nuestra newsletter, para reconocer el estado de tu sesión si la tuvieses y para servir más rápidos los contenidos.

No se captura IPs ni siquiera para el servicio de Analytics así que tu visita es privada.

JSESSIONID, _cfuid, wpSGCachePypass, mailerlite, gdpr, gawp

Translate »