Lösung für Magento 2.1+
Seit Magento 2.1 ist die Lebensdauer der Admin-Sitzung immer "Sitzung", dh bis der Browser geschlossen wird. Dieseist gewesen wurde möglicherweise aus Sicherheitsgründen eingeführt.
Der entsprechende Code befindet sich in Magento\Backend\Model\Session\AdminConfig
:
/**
* Set session cookie lifetime to session duration
*
* @return $this
*/
protected function configureCookieLifetime()
{
return $this->setCookieLifetime(0);
}
Wenn Sie dieses Verhalten ändern möchten, können Sie mit der folgenden Interceptor-Methode ein Plugin für diese Klasse hinzufügen:
public function beforeSetCookieLifetime()
{
$lifetime = $this->scopeConfig->getValue(
\Magento\Framework\Session\Config::XML_PATH_COOKIE_LIFETIME,
\Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT);
return [$lifetime, \Magento\Framework\Session\Config::COOKIE_LIFETIME_DEFAULT];
}
Wo $this->scopeConfig
sollte eine Instanz von sein \Magento\Framework\App\Config\ScopeConfigInterface
, injiziert über Konstruktorparameter.
Auf diese Weise wird die Cookie-Lebensdauer ab der Konfiguration wie im Frontend verwendet.
Beachten Sie, dass die Konfiguration unter Stores> Configuration> Advanced> Admin Security> Session Lifetime keine Auswirkungen mehr auf die Cookies hat! Es wird verwendet, um die Lebensdauer der Redis-Sitzung zu bestimmen. Wenn Sie also die Lebensdauer der Cookies erhöhen, sollten Sie auch diesen Wert erhöhen.