Dans Magento 1.x, le délai d'expiration de la session principale était défini via:
Backend -> System -> Configuration -> Admin -> Security -> Session Lifetime (seconds)
Au départ, ma question était de savoir comment définir cela dans Magento 2.0, mais apparemment, il existe des différences entre Magento 2.0 et Magento 2.1.
Pour Magento 2.0: Arkadii Chyzhov a expliqué comment régler cela (voir ci-dessous).
Pour Magento 2.1: fschmengler a suggéré une solution (voir ci-dessous).
Cependant, M 2.1 ne semble pas fournir de solution simple via le backend. Quelqu'un peut-il proposer une solution supplémentaire pour M 2.1?
Vérifiez l'image ci-jointe pour une meilleure compréhension du processus d'administration.
Allez dans Magasins-> Paramètres-> Configuration-> Avancé-> Admin-> Sécurité-> Durée de vie de la session d'administrateur (secondes)
Et vérifiez la capture d'écran.
la source
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é. Cette
a étéaurait pu être introduit pour des raisons de sécurité.Le code correspondant est en
Magento\Backend\Model\Session\AdminConfig
:Si vous souhaitez modifier ce comportement, vous pouvez ajouter un plugin pour cette classe avec la méthode d'intercepteur suivante:
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.
la source
setCookieLifetime
, une méthode publique avec des paramètresUne note ici, la réponse acceptée fonctionne cependant magento 2 utilise le dossier php par défaut pour stocker les fichiers de session, si vous l'avez configuré en php:
alors ceci est ajouté au système cron par l'installation php.
Alors vous pouvez soit
gc_maxlifetime
du php.ini (car ce sera la limite supérieure)la source
Une autre solution, sans modifier aucun paramètre, consiste à installer any
auto refresh addon
pour votre navigateur et à définir son temps (60 secondes).Il actualisera automatiquement la page toutes les 60 secondes, ce qui empêchera la durée de vie d'une session et nous pourrons commencer à travailler sur un autre onglet.
Je l'ai utilisé
Easy Auto Refresh
et ça marche bien pour moi.la source
Si vous utilisez plusieurs ordinateurs virtuels / serveurs pour le Web et la base de données et que l'heure n'est pas synchronisée, le problème est également à l'origine du problème.
Donc, si toutes les options ci-dessus ne fonctionnent pas, vérifiez l'horodatage / la date des deux serveurs lorsque vous utilisez plusieurs serveurs pour le Web et la base de données.
la source
Je ne sais pas pourquoi, mais pour certains d'entre nous, configurer la session d'administration à vie à partir du backend ne fonctionne pas, j'ai donc trouvé deux solutions:
Dans php.ini, changez session.gc_maxlifetime de 1440 au nombre de secondes souhaité. (Cette solution a fonctionné pour moi, testée sur magento 2.2.0 et 2.2.1)
Dans .htaccess, ajoutez "php_value session.gc_maxlifetime 28800" ou le nombre de secondes souhaité.
En définissant manuellement la durée de vie. Accédez à vendor / magento / module-encryption-key / etc / config.xml et passez du nombre 900 au nombre de secondes souhaité.
J'espère qu'une de ces solutions fonctionnera pour les autres aussi.
la source