Error: clave de formulario no válida

9

Tengo un problema con magento 1.9.2.3, aparece un mensaje de error cuando me conecto con mi formulario de administrador personalizado.

Creé un módulo y dupliqué la página cliente / cuenta / inicio de sesión para mi rol de usuario.

<?xml version="1.0"?>
<config>
    <modules>
        <Custom_Page>
            <active>true</active>
            <codePool>local</codePool>
        </Custom_Page>
    </modules>
</config>

mi config.xml:

<?xml version="1.0"?>
<config>
    <global>
        <page>
            <layouts>
                <Custom_Page>
                    <label>User Login</label>
                    <template>page/user_login.phtml</template>
                </Custom_Page>
            </layouts>
        </page>
    </global>
</config>

No hay problema con la versión antigua de magento.

Pero con 1.9.2.3: La clave de forma no válida . Actualiza la página que aparece.

NOTA: Si reemplazo el viejo Observer.php, está hecho:

www \ app \ code \ core \ Mage \ Admin \ Model \ Observer.php

Pero creo que no es serio reemplazar el nuevo Observer.php con el viejo.

EDITAR: Mi user_login.phtml contiene una entrada form_key.

<form action="/admin" method="post" id="login-form">
    <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>"/>

Gracias por tu ayuda.

phpschool
fuente
¿Qué navegador web usaste? Intenta usar Firefox porque también recibí este tipo de error en Chrome.
Fayyaz Khattak
Uso Chrome pero es el mismo error con todos los navegadores web (Firefox, IE, Safari).
phpschool
¿Puede configurar el "Dominio de cookies" del sistema para hacer que esto sea correcto?
Ketan Panchal

Respuestas:

27

Tuve el mismo problema y pude solucionarlo configurando el correcto

web / cookie / cookie_domain

y

web / cookie / cookie_path

valores en la tabla core_config_data.

No olvide borrar todos los datos de sesión y cookies en su navegador y la sesión de Magento y los archivos / datos de caché después.

codephunk
fuente
3
Entonces, ¿qué debo configurar en estas entradas?
Alejandro del Río
¿Cuáles son las entradas por favor?
Zoya
12

Utilicé estas consultas y pude volver a iniciar sesión

DELETE FROM core_config_data WHERE path='web/cookie/cookie_domain'; DELETE FROM core_config_data WHERE path='web/cookie/cookie_path';

y asegúrese de que el usuario del servidor web tenga derecho a escribir en el almacenamiento de la sesión. comprobar la session_save_pathconfiguración si guarda la sesión en archivos. Se parece a esto

<session_save><![CDATA[files]]></session_save> <session_save_path><![CDATA[/tmp/session]]></session_save_path>

phanvugiap
fuente
buena manera sin la necesidad de phpmyadmin, gracias :)
acidjunk
¡Agradable! ¡Esta solución me funciona!
Marc
5

Verifique su configuración para https. Si usa https para su magento pero intenta abrir un sitio con http, tendrá este problema.

Arni
fuente
1
cambie config web / secure / use_in_adminhtml a 0 en ese caso
roman204
¡Gracias, @ roman204, eso me estaba volviendo loco! Estaba tan seguro de que esta configuración solo significaba "usar lo que esté definido en la URL de base segura", pero aparentemente no, intenta aplicar https de todos modos. Después de casi una década trabajando con la bendita cosa, todavía no me había encontrado con este capricho hasta ahora. Magento, el regalo que sigue dando: D: D
Doug McLean
5

Recibí este error después de actualizar a php7.0 . ejecutando magento enterprise 1.9 . Luego probé todas las sugerencias disponibles. Así es como lo hice funcionar:

  1. Agregué un informe de errores en mi index.php y solucioné todos los errores que se informaban.

  2. En la tabla MySQL core_config_data, borré valores para web/cookie_path web/cookie_httponly. Asegúrese de tener el web/cookie_domain valor correcto con su dominio (muy importante).

  3. Borre la memoria caché y las cookies de su navegador .

webwiseguys
fuente
4

Las versiones más nuevas de Magento requieren formularios para <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />evitar los ataques CSRF (falsificación de solicitudes entre sitios).

andyjv
fuente
Sí, ya he agregado una entrada form_key en mi formulario y este es el mismo resultado.
phpschool
¿Puede confirmar que la clave de formulario se está generando realmente? (verifique la fuente de la página). Este problema ocurrió cuando actualizaste Magento? ¿De qué versión?
andyjv
Estoy seguro, cuando voy a consultar la página de origen: <input type="hidden" name="form_key" value="Pzty7ZxT6PWRSjhR"/>con magento 1.7.0.2 está bien.
phpschool
3

Tuve el mismo error con Magento 1.9.2.3 después de copiar el sitio en el servidor web local en MAMP 3.

Por lo tanto, un problema resuelto cuando he cambiado en la tabla core_config_datade la web/cookie/cookie_domainque mysite.lanen lugar de la mysite.lan:8888.

Galina
fuente
2

En mi caso, esto funcionaba en Linux, pero en mi entorno local de Windows usando virtualbox / Docker y Windows 10, este error fue causado por los permisos extraños que vb / docker / windows otorga a / var / sessions /. En mi entorno de desarrollo local, solo moví la ruta de una unidad de Windows asignada a una ruta "real" en Linux VM

He añadido esto al archivo de configuración app/etc/local.xml, luego se elimina todos los archivos en var/cachey var/sessiony podía iniciar sesión en Aceptar.

<session_save><![CDATA[files]]></session_save>
<session_save_path><![CDATA[/tmp]]></session_save_path>
Pete Henshall
fuente
2

En mi caso, creé el error con estos pasos: había movido una copia de magento (dev) en el mismo magento : magento / magento-copy Antes, estaban uno al lado del otro en el servidor. Cada uno con su propia cuota. Así que moviendo una qutoa a la otra -> ocurrieron problemas. Porque no pude ver la copia magento con FTP Cambié el propietario de los archivos por editor de archivos. Por alguna razón, esto creó el error.

TonkBerlin
fuente
1

Compruebe si puede iniciar sesión en https: // yourwebsite / admin en lugar de http y consulte core_config_data web / secure / use_in_adminhtml

Tengo un problema similar y el inicio de sesión solo funciona en modo seguro

Henryk Brzoska
fuente
1

A menudo tengo este problema cuando estoy trabajando en varios sitios de desarrollo y sitios en vivo, y hay cierta confusión de cookies. Anteriormente lo solucioné con consultas MySQL y eliminando archivos, pero encontré una forma más ordenada de resolver el problema.

La herramienta magerun proporciona una forma de verificar si hay problemas con la ruta de la cookie y corregirlos. magerun no es parte de Magento, por lo que deberá instalarlo. Se describe como una navaja suiza para magento, por lo que podría ser útil para otras cosas.

Para descargarlo:

wget https://files.magerun.net/n98-magerun.phar

Entonces

chmod +x n98-magerun.phar

Luego revise la ruta de la cookie para ver si hay problemas ...

./n98-magerun.phar config:get web/cookie/*

Imprimirá una tabla. Mira el valor de web/cookie/cookie_domain. Cuando tengo este problema, no coincide con el nombre de host adecuado para el sitio (por ejemplo, obtengo en dev.example.comlugar de www.example.com).

Para solucionarlo, debe restablecer la ruta y vaciar el caché, que magerun puede ayudar con ...

./n98-magerun.phar config:set web/cookie/cookie_domain ""
./n98-magerun.phar cache:flush

Entonces debería poder iniciar sesión nuevamente.

Kevin Sadler
fuente
0

Mi problema era la versión 7.2 de php.

cambiar mi versión de php para 5.6 en .htaccess

Aplicación AddHandler / x-httpd-php56 .php suPHP_ConfigPath / opt / php56 / lib

Jamerson Lima
fuente
0

Otra forma en que este error puede suceder para los módulos de administración caseros es cuando frontNameen su routes.xmlno coincide con el <add action"someFrontName/someAction" />de su menu.xml. Esto hace que la clave que ve en el enlace cuando intenta abrir el módulo sea diferente de lo esperado.

bdbdbd
fuente
0

En cuanto a la respuesta aceptada ( https://magento.stackexchange.com/a/102678/6078 ) las entradas correctas son

web / cookie / cookie_domain = su URL base como:

https://website.com/ (without any store code)

y

web / cookie / cookie_path

normalmente solo /pero /[storecode]|también puede ser por tienda

Para el desarrollo local, generalmente funciona para eliminarlo cookie_domaino dejarlo vacío, pero parece que Microsoft Edge 80 tiene problemas con eso.

OZZIE
fuente