Solution pour Magento 2.1+
Depuis Magento 2.1, la durée de vie d'une session d'administrateur est toujours "session", c'est-à-dire jusqu'à ce que le navigateur soit fermé. Cettea été aurait pu être introduit pour des raisons de sécurité.
Le code correspondant est en Magento\Backend\Model\Session\AdminConfig
:
/**
* Set session cookie lifetime to session duration
*
* @return $this
*/
protected function configureCookieLifetime()
{
return $this->setCookieLifetime(0);
}
Si vous souhaitez modifier ce comportement, vous pouvez ajouter un plugin pour cette classe avec la méthode d'intercepteur suivante:
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];
}
Où $this->scopeConfig
devrait être une instance de \Magento\Framework\App\Config\ScopeConfigInterface
, injecté via le paramètre constructeur.
De cette façon, la durée de vie des cookies est utilisée à partir de la configuration, tout comme dans l'interface frontale.
Notez que la configuration dans Magasins> Configuration> Avancée> Sécurité admin> Session Lifetime n’a plus d’effet sur les cookies! Il est utilisé pour déterminer la durée de vie de la session Redis. Par conséquent, si vous augmentez la durée de vie des cookies, vous devez également augmenter cette valeur.