Soluzione per Magento 2.1+
A partire da Magento 2.1, la durata della sessione di amministrazione è sempre "sessione", ovvero fino alla chiusura del browser. Questoè stato potrebbe essere stato introdotto per motivi di sicurezza.
Il codice pertinente è in Magento\Backend\Model\Session\AdminConfig
:
/**
* Set session cookie lifetime to session duration
*
* @return $this
*/
protected function configureCookieLifetime()
{
return $this->setCookieLifetime(0);
}
Se si desidera modificare questo comportamento, è possibile aggiungere un plug-in per questa classe con il seguente metodo intercettore:
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];
}
Dove $this->scopeConfig
dovrebbe essere un'istanza di \Magento\Framework\App\Config\ScopeConfigInterface
, iniettata tramite il parametro del costruttore.
In questo modo la durata del cookie viene utilizzata dalla configurazione, proprio come nel frontend.
Nota che la configurazione in Negozi> Configurazione> Avanzate> Sicurezza amministratore> Durata sessione non ha più alcun effetto sui cookie! Viene utilizzato per determinare la durata della sessione Redis, quindi se si aumenta la durata dei cookie, è necessario aumentare anche questo valore.