错误-无效的表单密钥


9

我遇到了magento 1.9.2.3的问题,当我使用自定义管理表单连接时出现错误消息。

我创建了一个模块,并为我的用户角色复制了客户/帐户/登录页面。

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

我的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>

旧的magento版本没有问题。

但是使用1.9.2.3:无效的表单密钥。请刷新页面出现。

注意:如果我替换了旧的Observer.php,它就完成了:

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

但是我认为用旧的替换新的Observer.php并不严重。

编辑:我的user_login.phtml包含一个输入form_key。

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

谢谢你的帮助。


您使用了哪个网络浏览器?请尝试使用Firefox,因为我在Chrome上也遇到了此类错误。
Fayyaz Khattak

我使用的是Chrome,但所有网络浏览器(Firefox,IE,Safari)的错误均相同。
phpschool

您能否从系统设置“ Cookie域”以使此问题正确。
Ketan Panchal

Answers:


27

我有同样的问题,可以通过设置正确的问题来解决

网络/ cookie / cookie_domain

网络/ cookie / cookie_path

表中的值core_config_data

不要忘记清除浏览器和Magento会话中的所有会话和cookie数据,然后再缓存文件/数据。


3
那么,我必须在此条目中设置什么?
亚历杭德罗·德尔里奥

请输入什么?
Zoya

12

我使用了这些查询,可以再次登录

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

并请确保网络服务器用户有权写入会话存储。检查session_save_path设置是否将会话保存到文件。看起来像这样

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


无需phpmyadmin的好方法,谢谢:)
acidjunk

真好!这个解决方案对我有用!
马克

5

检查您的HTTPS设置。如果您对magento使用https,但尝试使用http打开网站,则会遇到此问题。


1
在这种情况下,将config web / secure / use_in_adminhtml更改为0
roman204 '17

谢谢@ roman204,这让我发疯了!我非常确定此设置仅意味着“使用安全基本URL中定义的任何内容”,但显然不是,它会尝试强制实施https。经过近十年的努力,直到现在我仍然没有遇到过这个怪癖。Magento,只是不断送出的礼物:D:D
Doug McLean

5

升级到php7.0后出现此错误。运行magento 企业1.9。然后,我尝试了所有建议。这是我的工作方式:

  1. 我在index.php中添加了错误报告功能,并修复了所报告的所有错误。

  2. 在MySQL表中core_config_data,我清除的值web/cookie_path web/cookie_httponly。确保您的域名具有正确的 web/cookie_domain 价值(非常重要)。

  3. 清除浏览器缓存cookie


4

较新版本的Magento要求表单必须<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />防止CSRF(跨站点请求伪造)攻击。


是的,我已经在表单中添加了一个输入form_key,这是相同的结果。
phpschool

您可以确认是否确实生成了表单密钥吗?(检查页面来源)。升级Magento时发生此问题?从哪个版本开始?
andyjv '16

我敢肯定,当我去检查源页面时:<input type="hidden" name="form_key" value="Pzty7ZxT6PWRSjhR"/>使用magento 1.7.0.2可以。
phpschool

3

在MAMP 3上的本地Web服务器上复制站点后,Magento 1.9.2.3出现了相同的错误。

所以,问题,当我在表决心改变core_config_dataweb/cookie/cookie_domain,以mysite.lan代替mysite.lan:8888


2

就我而言,这在Linux上有效,但在使用virtualbox / Docker和Windows 10的本地Windows环境中,此错误是由vb / docker / windows对/ var / sessions /赋予的怪异权限引起的。仅在本地开发环境中,我将路径从映射的Windows驱动器移动到了Linux VM上的“真实”路径

我将此添加到配置文件中app/etc/local.xml,然后删除了中的所有文件var/cachevar/session并可以登录OK。

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

2

在我的情况下,我通过以下步骤创建了错误:我已经在magento本身中移动了magento副本(dev): magento / magento-copy 之前,它们在服务器上彼此相邻。每个人都有自己的配额。因此,将一个Qutoa转移到另一个->问题中。原因我无法使用FTP查看宏复制,我通过文件编辑器更改了文件的所有者。出于任何原因,这都会导致错误。



1

当我在多个开发站点和现场站点上工作时,经常会遇到此问题,并且存在一些cookie混乱的情况。以前,我已通过MySQL查询和删除文件修复了该问题,但发现了一种更整洁的方法来解决该问题。

magerun工具提供了一种检查Cookie路径问题并进行修复的方法。magerun不是Magento的一部分,因此您需要安装它。它被描述为magento的瑞士军刀,因此您可以发现它对其他用途很有用。

要下载它:

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

然后

chmod +x n98-magerun.phar

然后检查cookie路径是否有问题...

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

它将打印一张表格。查看的值web/cookie/cookie_domain。当我遇到此问题时,它与该站点的正确主机名不匹配(例如,我获得dev.example.com而不是www.example.com)。

要修复它,您需要重置路径并刷新缓存,magerun可以帮助您...

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

然后,您应该可以再次登录。


0

我的问题是php版本7.2。

在.htaccess中将我的PHP版本更改为5.6

AddHandler应用程序/ x-httpd-php56 .php suPHP_ConfigPath / opt / php56 / lib


0

自制管理模块可能发生此错误的另一种方式是,当frontName您的routes.xml中的与您的中的不匹配<add action"someFrontName/someAction" />menu.xml。这将导致您在尝试打开模块时在链接中看到的键与预期的不同。


0

关于接受的答案(https://magento.stackexchange.com/a/102678/6078)正确的输入是

web / cookie / cookie_domain =您的基本网址,例如:

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

网络/ cookie / cookie_path

通常只是,/但也可以是/[storecode]|每个商店

对于本地开发,通常可以删除cookie_domain或将其保留为空白,但是Microsoft Edge 80似乎与此有关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.