“Clave de formulario inválida. actualice la página "- no se puede iniciar sesión en el panel de administración

18

Visito regularmente mi sitio para asegurarme de que funciona y noté que no aparecían imágenes de productos, pensando que era un problema con la caché de indexación. Intenté iniciar sesión en el panel de administración y recibí el error:

"clave de formulario no válida. Actualice la página"

o

Otros síntomas son que los clientes no pudieron agregar productos al carrito y un rendimiento extremadamente lento.

No hay errores en los registros (/ var / logs)

¿Qué pasos adicionales debo realizar para resolver este problema?

SR_Magento
fuente

Respuestas:

48

También ocurre si el dominio de cookies en Sistema> Configuración> Web> Cookies es diferente del dominio real del sitio.

Para eliminar la configuración sin acceso al panel de administración:

  1. use la siguiente consulta SQL en la consola MySQL o en un cliente como phpMyAdmin:

    DELETE FROM core_config_data WHERE path='web/cookie/cookie_domain';
  2. borrar el caché Si está utilizando el backend de caché basado en archivos predeterminado, elimine todos los directorios a continuación var/cache.

Luego, tan pronto como pueda iniciar sesión nuevamente, configure el dominio de cookies correcto para cada sitio web o tienda (Ejemplo: .example.compor ejemplo.com, www.example.com y todos los demás subdominios)

Si está utilizando n98-magerun (¡y debería hacerlo!), Se puede lograr lo mismo con:

n98-magerun config:delete web/cookie/cookie_domain
n98-magerun cache:clean config
Fabian Schmengler
fuente
Hola @fschmengler, agregue más detalles sobre cómo verificar esta configuración desde phpmyadmin, porque el usuario no puede iniciar sesión en el panel de administración y algunos desarrolladores que son nuevos en el desarrollo de Magento no saben dónde verificar dicha configuración en la base de datos. Lo siento, pero solo por la ayuda de los nuevos miembros :)
Mohit Kumar Arora
@MohitKumarArora tienes razón, actualicé la respuesta
Fabian Schmengler
Ahora he votado. :)
Mohit Kumar Arora
n98 funciona de manera fantástica. Gracias por la info.
andy jones
@FabianSchmengler, verifiqué core_config_data y es el valor correcto para mi sitio. ¿Debo seguir todos los pasos que me proporcionó? ¿Su enfoque aún funcionaría en este caso?
datasn.io
18

Estoy publicando la pregunta / respuesta porque no pude encontrar nada relevante.

El problema era que la unidad en la que reside mi instalación de magento estaba llena. Liberé algo de espacio, borré / var / session y / var / cache y todo volvió a la normalidad.

SR_Magento
fuente
1
Advertencia: la eliminación var/sessioncerrará la sesión de todos y borrará todos los carritos de invitados. Vea aquí una solución que solo elimina las sesiones antiguas: magento.stackexchange.com/a/58167/243
Fabian Schmengler
@fschmengler sí, pero ¿realmente quieres arriesgarte con sesiones que no se crearon correctamente para empezar? Cuando revisé la sesión / var / había todo tipo de archivos de 0kb que no es normal.
SR_Magento
1
Absolutamente una primera cosa para comprobar. He estado atormentando esto por horas. ¡Gracias!
Bryant Jackson
Para mí fue espacio en disco. Me enteré después de intentar git pull, ya que falló con un error relacionado con el espacio en disco.
Damodar Bashyal
@SR_Magento Sir Me quitaron la carpeta de caché y la carpeta de sesión tantas veces que funciona solo por un tiempo después de algún tiempo hay un mismo problema
Amaresh Tiwari
3

Hay 3 soluciones:

  1. Use estos comandos en phpmyadmin

    ELIMINAR DE core_config_data WHERE ruta = 'web / cookie / cookie_domain';

    BORRAR DE core_config_data WHERE ruta = 'web / cookie / cookie_path';

Ahora intenta iniciar sesión.

2. Elimine todo en la carpeta var y luego verifique si funciona.

3. Reemplace el archivo .htaccess con un archivo de muestra .htaccess y luego intente iniciar sesión en el administrador.

Espero que te ayude.

Lokranjan
fuente
1

Otro posible problema, algo obvio, para verificar primero: si su sitio usa SSL, asegúrese de que no esté usando el protocolo http para su página de administración; deberías estar usando https . por ejemplo, https://example.com/admin

voxoide
fuente
1

En mi caso, el problema parece ser porque he creado el usuario administrador usando n98-magerun con un usuario que no puede escribir en magentofolder / var y en su lugar utilicé la carpeta de respaldo / tmp / magento.

Acabo de eliminar mi usuario administrador sudo -iu OTHERUSERy ejecuté un (usuario que posee la carpeta magento) y corrí n98-magerun admin:user:createnuevamente para crear mi usuario.


ACTUALIZACIÓN: en otro caso, la URL del administrador se ha visitado sin www. sintaxis, y la configuración de cookies estaba usando www. Solo pongo el www. en la URL del administrador resolvió el problema. ;)

Ricardo Martins
fuente
¿No debería ser esto admin:user:create?
sr9yar
1
@ sr9yar nope - eso es Magento2 - esto es M1
treyBake
0

Junto con el paso anterior de borrar el caché, también tuve que seguir el artículo a continuación y configurar la información de datos de la sesión en la ruta correcta siguiendo los pasos a continuación

Artículo de referencia

/programming/26123081/failed-to-write-session-data-magento

Lo arreglé cambiando el session.save_path para colocarlo en la VM.

Cambiar la aplicación de archivo / etc / local.xml

reemplazado por debajo

Entonces comenzó a funcionar. Además, a veces no se puede decir realmente el problema, por lo tanto, es importante que habilite el registro de errores. Habilite esto consultando el siguiente artículo

https://www.thecreativedev.com/how-to-enable-system-log-and-errorswarning-in-magento/

Abhishek Chowla
fuente
0

Borrar cookies y caché. Abra el panel de administración en modo incógnito.

Abdul Rafay
fuente
-3

Este problema conocido generalmente se produce después de aplicar el parche SUPEE-7405 incluido en la versión Magento 1.9.2.3. Se puede resolver agregando el siguiente código en el archivo: app / code / local / Mage / Core / Model / Session.php

public function validateFormKey()
{
    if (!($formKey = $_REQUEST['form_key']) || $formKey != $this->getFormKey()) {
        return false;
    }
    return true;
}

Es posible que este archivo no exista en su repositorio, así que cópielo app/code/core/Mage/Core/Model/Session.phpy péguelo app/code/local/Mage/Core/Model/Session.phpDespués de eso, agregue la función anterior en el archivo porque puede faltar en el archivo principal.

También borre la memoria caché y las cookies de su navegador. Borre todos los archivos en Magento var/cachey el var/sessioncontenido de las carpetas. Luego inicie sesión en su panel de administración.

InfoBeans
fuente
Ermm ... ¿no sería una mejor solución agregar la salida del bloque de clave de formulario a la plantilla de administración anulada? (De esa forma, la protección CSRF funcionará según lo previsto).
Luke A. Leber
2
Uno nunca debe editar archivos principales.
Max