Questions tagged «session»

表示有关Magento中会话管理的问题。


6
如何在magento 2 Beta中在前端显示会话消息
我想在magento 2模块中显示错误或成功消息。我用类名扩展了前端控制器\Magento\Framework\App\Action\Action。然后我使用以下代码将客户端重定向到主页 $this->messageManager->addError($SomeMessage); $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setPath($base_path); 一切正常,但此行从不打印错误 $this->messageManager->addError($SomeMessage);


3
登录并将客户重定向到他的网站
我想在一个mutistore-multisite多站点Magento中,强迫用户登录他们注册的同一网站。他们可以在任何网站中使用任何登录表单,但是该表单应检查其凭据并将其重定向到正确的网站。 我试图检查客户的网站,并强迫他登录。不过效果不是很好。用户登录到当前网站,而不是他注册的网站。 在app / code / local / mage / Customer / Session.php中 public function login($username, $password) { /**************************************************/ $customer = Mage::getModel("customer/customer"); $customer_website = null; foreach (Mage::app()->getWebsites() as $website) { $customer->setWebsiteId($website->getId()); $customer->loadByEmail($username); //check if user exists if($customer->getName()){ $customer_website = $website->getId(); } } /*************************************************/ $customer = Mage::getModel('customer/customer')->setWebsiteId($customer_website); if ($customer->authenticate($username, $password)) { …

3
Magento会话存储:Redis与Memcached
我正在运行Magento EE 1.12.2(在CE 1.7.2中也是如此),在这里我们有Redis进行缓存(Cm_Cache扩展,Redis v 2.2.12),但是我们使用Memcache进行会话存储。 这些Magento版本不支持开箱即用的Redis。所以我在这里关注的是: 在工作量和速度改进方面,是否值得将会话存储放入Redis中? Memcache是​​否一样好,甚至更好? 在此项目中,由于需要将第三方XML文件存储到会话中,因此会话文件很大,因此优化会话读写可能会产生很大的影响。 来自local.xml: <session_save><![CDATA[memcache]]></session_save> 和: <cache> <backend>Cm_Cache_Backend_Redis</backend> [...] </cache>

2
安装扩展后无法登录到管理员
对于此内容的细微之处,我们事先表示歉意。 我出售Magento扩展程序。在最新版本中,我已经开始从一些用户那里收到奇怪的错误报告。具体来说,安装扩展程序后,他们报告无法登录到管理员,登录请求被重定向回登录页面,并且未显示任何错误消息。 因此,这听起来像是经典的“无法设置cookie /实例化会话”问题。如果这会很奇怪的是他们都能够3后登陆- 19小时(这是一个估计值)。换句话说,他们遇到问题,请与我联系以寻求支持,我回信,他们报告问题已消失。我还假设清除其cookie并建立一个新的会话ID将解决此问题,并将其推荐给遇到它的用户。 这里有没有人遇到类似的情况,或者可以想到发生这种情况的原因?我无法在本地重新创建该问题,但是我已经获得了足够的报告,我相信这是一个合法的问题。

1
使用Cm_RedisSession之后的会话锁定
我们使用Magento 1.9.2.4中的默认Cm_RedisSession模块切换到Redis作为会话存储。部署后,许多客户经历了非常长的页面加载时间(> 20-30秒)。对于Redis-Server,我们在Tideways中使用AWS ElastiCache(m3.large) (类似于Newrelic),在跟踪中看到了这个瓶颈: 在阅读了有关此问题的更多信息并查看了Cm_RedisSession日志后,我发现来自客户的会话已被锁定,并且经过更多研究后,由于会话锁定的改进,我决定将Cm_RedisSession升级到1.14。 使用最新版本,该问题已最小化,因为该锁定现在将在5秒后正确断开。但是仍然有5秒的加载时间。 我有两种理论。 一些请求死亡,因此没有任何session_close()调用,因此该锁将不会被释放: 我启用了每个日志(php-fpm,nginx和magento),并看着它们,直到该错误在Tideways中出现给客户,但在此特定时间范围内没有错误 多个脚本尝试读取/写入同一会话: 我创建了一个脚本,该脚本使用相同的前端cookie并行调用同一页面一百次,但是没有出现锁。 在这一点上,我不知道为什么会出现此锁,更糟糕的是,我无法在本地的Maschine或登台系统上重现它。 有没有人暗示或解决我该如何解决这个问题? 编辑:有人试图禁用Cm_RedisSession中的锁定吗? 编辑:与1.15相同的问题 编辑:大多数带锁的请求都是ajax请求。但是我还是无法复制它。 $ php5-fpm -v PHP 5.5.32-1+deb.sury.org~trusty+1 (fpm-fcgi) (built: Feb 5 2016 10:10:42) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by …

1
删除magento中的var / session后,保持客户登录
我们在直播站点中面临一些问题,如下所示。 据我所知,如果我们删除var / session文件夹,则必须同时登录到frontend和backend。 解决此问题的方法:实时站点的前端空白或继续加载而不加载,我们必须一次又一次删除会话文件夹。如果我们也删除会话文件夹,有什么办法可以保持我们的客户登录该网站?

2
清漆和松节油
我发现,每当在服务器上重新启动Varnish时,我就会为用户失去会话。 这是轮到我的顾客放弃购物车了。 这是Varnish的正常行为,还是应该归咎于我的VCL?似乎不是 进一步的信息。 经过进一步调查,似乎此问题与GitHub上的Issue#725有关。 我的Magento安装版本为1.9.1.0。还应该说我的整个前端都在https下运行。我在Varnish前面使用Pound终止SSL。 在此版本中,Magento的默认行为似乎是创建辅助前端cookie,通常称为“ frontend_cid”,以尝试抵御MITM攻击。 看起来Turpentine生成的VCL文件没有传递此cookie,这导致了无效的会话。 谁能解释VCL文件如何将Magento传递给客户端的Cookie传递给他人? 我将范围缩小到Varnish,不生成所需的cookie。 从Magento 1.9.1.0开始,引入了一个“ frontend_cid” cookie来阻止MITM攻击。 可以Mage_Core_Model_Session_Abstract_Varien在第135行的类中找到 if (Mage::app()->getFrontController()->getRequest()->isSecure() && empty($cookieParams['secure'])) { // secure cookie check to prevent MITM attack $secureCookieName = $sessionName . '_cid'; if (isset($_SESSION[self::SECURE_COOKIE_CHECK_KEY]) && $_SESSION[self::SECURE_COOKIE_CHECK_KEY] !== md5($cookie->get($secureCookieName)) ) { session_regenerate_id(false); $sessionHosts = $this->getSessionHosts(); $currentCookieDomain = $cookie->getDomain(); foreach …

2
Magento何时使用会话,何时使用cookie?
我知道Magento具有以下用于会话和Cookie处理的核心功能: Mage::getSingleton('core/cookie'); Mage::getSingleton('core/session'); Magento什么时候设置Cookies,什么时候设置PHP会话?有哪些用例? 我有点困惑,因为我知道Magento将购物车信息存储在中Mage::getSingleton('checkout/session'),并将用户的状态存储在中Mage::getSingleton('customer/session')。但是结帐会话似乎不是一个会话,而是一个cookie。因为当我关闭浏览器并重新打开页面时,这些物品仍在购物车中。 这是否意味着该checkout/session模型设置了Cookie而不是全局$_SESSION变量?


1
在session_write_close被调用后,如何添加会话消息?
我们使用了Unirgy出色的uRapidFlow模块,但遇到了一些麻烦。当您运行他们的个人资料之一时,他们会叫session_write_close。这样做的问题是,这意味着如果我们希望从adminhtml控制器运行进程,则无法设置会话Flash消息来通知用户成功或捕获的异常。 完成该过程后,是否可以重新启动会话以添加会话消息? 最初我不确定是否可以用PHP重新启动会话,但是PHP的概念证明有效: session_start(); // if this is the second run, show the value if (!empty($_SESSION['foo'])) { echo $_SESSION['foo'], PHP_EOL; } // set an initial value $_SESSION['foo'] = 'bar'; // start running profile session_write_close(); // after running profile session_start(); // set a value to see if it takes $_SESSION['foo'] = …

1
获取当前订单ID magento 2
我知道如何通过此代码检索上一个订单ID, $this->_checkoutSession->getQuote()->getReservedOrderId(); 通过注入获得_checkoutSession的地方, \Magento\Checkout\Model\Session $checkoutSession 我想知道如何在magento 2中获取当前的订单ID。

3
获取会话对象的正确方法?
我现在正在为Magento 2编写一个付款模块,并根据“ Magento扩展质量程序编码标准” CodeSniffer (https://github.com/magento/marketplace-eqp)对其进行检查。 对于我的每个使用(checkout)会话对象的类,CodeSniffer都会发出以下警告: Session object MUST NOT be requested in constructor. It can only be passed as a method argument. 我通过以下方式获取会话对象: /** * Checkout session object * * @var \Magento\Checkout\Model\Session */ protected $checkoutSession; /** * Constructor * * @param \Magento\Checkout\Model\Session $checkoutSession * @return void */ public function …


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.