“无效的表单密钥。请刷新页面”-无法登录到管理面板


18

我定期访问我的网站以确保其正常工作,并注意到没有出现产品图片,并认为这是索引缓存的问题,我尝试登录到管理面板并收到错误消息:

“无效的表单密钥。请刷新页面”

要么

其他症状是客户无法将产品添加到购物车,并且性能极慢。

日志中没有错误(/ var / logs)

我应该执行哪些其他步骤来解决此问题?

Answers:


48

如果“ 系统”>“配置”>“ Web”>“ Cookie”中的cookie域与实际站点域不同,也会发生这种情况。

要在不访问管理面板的情况下删除设置,请执行以下操作:

  1. 在MySQL控制台或phpMyAdmin之类的客户端中使用以下SQL查询:

    DELETE FROM core_config_data WHERE path='web/cookie/cookie_domain';
  2. 清除缓存。如果您使用的是默认的基于文件的缓存后端,请删除下面的所有目录var/cache

然后,只要您可以再次登录,就可以为每个网站或商店设置正确的Cookie域(例如:.example.comexample.com,www.example.com和所有其他子域)

如果您使用的是n98-magerun(应该这样做),则可以使用以下方法完成此操作:

n98-magerun config:delete web/cookie/cookie_domain
n98-magerun cache:clean config

@fschmengler,您好,请添加有关如何从phpmyadmin检查此设置的更多详细信息,因为用户无法登录到管理面板,并且某些Magento开发的新开发人员不知道在数据库中的哪里可以检查这种设置。抱歉,仅在新成员的帮助下:)
Mohit Kumar Arora

@MohitKumarArora您说得对,我更新了答案
Fabian Schmengler

现在我投票了。:)
Mohit Kumar Arora

N98的方式太棒了。谢谢(你的)信息。
安迪·琼斯

@FabianSchmengler,我检查了core_config_data,这是我的站点的正确值。我还需要完成您提供的所有步骤吗?在这种情况下,您的方法仍然有效吗?
datasn.io

18

我发布问题/答案是因为找不到任何相关内容。

问题是我的magento安装所在的驱动器已满。我腾出一些空间,清除/ var / session和/ var / cache,一切恢复正常。


1
警告:删除var/session将注销所有人并清除所有来宾购物车。请参阅此处,了解仅删除旧会话的解决方案:magento.stackexchange.com/a/58167/243
Fabian Schmengler

@fschmengler是的,但是您是否真的想尝试一次未正确创建的会话?当我检查/ var / session时,有各种各样的0kb文件,这是不正常的。
SR_Magento

1
绝对是第一件事要检查。我已经为此花了好几个小时。谢谢!
科比·杰克逊

对我来说是磁盘空间。我尝试进行git pull之后发现了它,因为它失败了,并且出现了与磁盘空间相关的错误。
Damodar Bashyal

@SR_Magento先生,我被删除了很多次缓存文件夹和会话文件夹,所以它只能在一段时间后才能工作,并且存在相同的问题
Amaresh Tiwari

3

有3个解决方案:

  1. 在phpmyadmin中使用这些命令

    从core_config_data删除WHERE path ='web / cookie / cookie_domain';

    从core_config_data删除WHERE path ='web / cookie / cookie_path';

现在尝试登录。

2.删除var文件夹中的所有内容,然后检查是否有效。

3.将.htaccess文件替换为示例.htaccess文件,然后尝试登录管理员。

希望对您有帮助。



1

就我而言,问题似乎是因为我使用n98-magerun创建了一个管理员用户,而该用户无法在magentofolder / var上进行写入,而是使用了后备文件夹/ tmp / magento。

我只是删除了管理员用户,然后执行了一个sudo -iu OTHERUSER(拥有magento文件夹的用户),然后n98-magerun admin:user:create再次运行以创建我的用户。


更新:在另一种情况下,访问管理员URL时没有www。语法,并且cookie设置使用的是www。只需输入www。在管理员网址中解决了该问题。;)


这不是admin:user:create吗?
sr9yar

1
@ sr9yar nope-那是Magento2-这是M1
treyBake

0

除了上述清除缓存的步骤外,我还必须遵循以下文章,并按照以下步骤将会话数据信息设置在正确的路径中

参考文章

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

我通过更改session.save_path将其放置在VM中进行了修复。

更改文件app / etc / local.xml

替换为下面

然后它开始工作。同样,有时您无法真正分辨出问题所在,因此启用错误日志记录很重要。通过参考以下文章启用此功能

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



-3

在应用Magento 1.9.2.3版本中包含的补丁SUPEE-7405之后,通常会出现此已知问题。可以通过在文件中添加以下代码来解决此问题-app / code / local / Mage / Core / Model / Session.php

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

该文件可能在您的存储库中不存在,因此请从文件中复制app/code/core/Mage/Core/Model/Session.php并粘贴app/code/local/Mage/Core/Model/Session.php到文件中。之后,在文件中添加上述功能,因为核心文件中可能缺少该文件。

同时清除浏览器缓存和Cookie。清除Magento中的所有文件var/cachevar/session文件夹内容。然后登录到您的管理面板。


Ermm ..不是更好的解决方案是将表单键块输出添加到覆盖的adminhtml模板吗?(这样,CSRF保护将按预期工作)。
路加·A·勒伯

2
永远不要编辑核心文件。
最多
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.