我只是magento的新手。我已经在我的本地主机上安装了 magento。完成所有设置后,当我使用管理页面登录时,即使使用正确的用户名和密码,我也无法登录 chrome 浏览器。但是当我尝试登录firefox时没有问题。那么有人真的可以在这里帮助我解决问题吗?
15 回答
我认为session cookie
chrome浏览器有问题。因此,只需浏览此目录
/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
文件并在 magento 中注释掉从 85 到 92 的行(我的情况是 1.7.2)。像这样
// session cookie params
/* $cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath(),
'domain' => $cookie->getConfigDomain(),
'secure' => $cookie->isSecure(),
'httponly' => $cookie->getHttponly()
);
*/
之后尝试从您的后端登录。希望您可以使用 chrome 登录。这肯定会对你有所帮助。如果您仍然面临问题,请回复我。
在 localhost 中设置 magento 时尝试使用 127.0.0.1。我也遇到了同样的问题,这是a已经提出的解决方案,它工作正常。
从System -> Configuration -> General -> Web
中,使用 IP 地址设置不安全和安全的基本 URL。并尝试再次登录。
转到此位置的文件:- app\code\core\Mage\Core\Model\Session\Abstract\Varien.php
并注释掉以下内容(第 85 到 102 行);
// session cookie params
$cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath()//,
//'domain' => $cookie->getConfigDomain(),
//'secure' => $cookie->isSecure(),
//'httponly' => $cookie->getHttponly()
);
//if (!$cookieParams['httponly']) {
// unset($cookieParams['httponly']);
// if (!$cookieParams['secure']) {
// unset($cookieParams['secure']);
// if (!$cookieParams['domain']) {
// unset($cookieParams['domain']);
// }
// }
//}
并使用您的凭据登录。希望这对您有用!!!
当您尝试登录时,Magento会cookie_domain
在桌面上看到。core_config_data
如果它与您的域不同,则无法进入管理面板,只需刷新页面即可,不会出现错误。
从您的数据库中打开core_config_data
表并搜索或过滤path
列web/cookie/cookie_domain
并将其更改为 null 或您的域。
当它发生在我身上时,问题是因为我移动了一个目录,但主要内容的 .HTACCESS 文件没有移动到新路径。
检查您的 .htaccess 文件是否在主要内容中。
只需在此处应用注释...文件位置:\app\code\core\Mage\Core\Model\Session\Abstract\Varien.php
/*
// session cookie params
$cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath(),
'domain' => $cookie->getConfigDomain(),
'secure' => $cookie->isSecure(),
'httponly' => $cookie->getHttponly()
);
*/
使用 Internet Explorer 或其他浏览器以管理员身份登录。刷新所有缓存..您将能够使用 chrome 登录。无需修改任何代码即可登录
如果您使用的是 Magento 1.9,文件必须略有不同:/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
$cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath()/*,
'domain' => $cookie->getConfigDomain(),
'secure' => $cookie->isSecure(),
'httponly' => $cookie->getHttponly()*/
);
/*if (!$cookieParams['httponly']) {
unset($cookieParams['httponly']);
if (!$cookieParams['secure']) {
unset($cookieParams['secure']);
if (!$cookieParams['domain']) {
unset($cookieParams['domain']);
}
}
}*/
提供表单密钥也很重要,否则您的表单将不会得到处理。
<?php echo $this->getBlockHtml('formkey'); ?>
这是我在相同情况下帮助我的简单解决方案。尝试60 秒。
在Google Chrome中,在Developer Tools中(右键单击任何页面元素并选择 Inspect Element),转到Resources -> Cookies 选项卡。删除原始域的额外 cookie。或将您的基本 url 域设置为其他内容,或更改端口。
正如公认的答案所指出的那样,在本地主机上访问 Magento 时,问题出在 chrome 上。使用以下代码段将代码包装在 中app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
,只有在本地主机(IP'127.0.0.1' 或 '::1')上时才会重置会话参数数组。
// SNIPPET Part 1: add this before the original array definition
// -----------------------------------------------------------
if(in_array($_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'))) {
$cookieParams = array();
} else {
// here comes the original code, thats what you should
// look for but not touch
// -------------------------------------------------------
// session cookie params
$cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath(),
'domain' => $cookie->getConfigDomain(),
'secure' => $cookie->isSecure(),
'httponly' => $cookie->getHttponly()
);
// SNIPPET Part 2: add the closing bracket
// ------------------------------------------
}
我有 Magento 版本。1.14.2.1
更改 varien.php 并没有解决我的问题。
输入127.0.0.1
而不是localhost
在仪表板配置 Web Base URL 中解决了我的问题。
我仍然可以在 url 中输入 localhost,它会自动将其重定向到 ip 格式的 url。
对于 Magento 2
请使用http://127.0.0.1而不是 WAMP 上的 localhost
{文件夹路径}\magento2\vendor\magento\zendframework1\library\Zend\Session.php
如前所述,前往并发表评论
public static function rememberUntil($seconds = 0)
{
if (self::$_unitTestEnabled) {
self::regenerateId();
return;
}
$cookieParams = session_get_cookie_params();
session_set_cookie_params(
$seconds,
//$cookieParams['path'],
//$cookieParams['domain'],
//$cookieParams['secure']
);
// normally "rememberMe()" represents a security context change, so should use new session id
self::regenerateId();
}