Magento 2 Backend Session Timeout

53

In Magento 1.x wurde das Zeitlimit für die Backend-Sitzung wie folgt festgelegt:
Backend -> System -> Configuration -> Admin -> Security -> Session Lifetime (seconds)

Anfangs war meine Frage, wie man dies in Magento 2.0 einstellt, aber anscheinend gibt es Unterschiede zwischen Magento 2.0 und Magento 2.1

Für Magento 2.0: Arkadii Chyzhov hat darauf hingewiesen, wie dies eingestellt werden soll (siehe unten).

Für Magento 2.1 hat fschmengler eine Lösung vorgeschlagen (siehe unten).

M 2.1 scheint jedoch keine einfache Lösung über das Backend zu bieten. Kann sich jemand eine zusätzliche Lösung für M 2.1 einfallen lassen?

Els den Iep
quelle

Antworten:

82

Stores> Einstellungen> Konfiguration> Erweitert> Admin> Sicherheit> Lebensdauer der Admin-Sitzung (Sekunden)

Es besteht auch die Möglichkeit, diesen Parameter direkt auf die Datenbank zu setzen. Geben Sie einfach einen Wert unter path ein

admin / security / session_lifetime

in der Tabelle core_config_data

Aktualisieren

Lebensdauer des Magento 2.1 Admin-Cookies = Stores> Einstellungen> Konfiguration> Erweitert> Admin> Sicherheit> Admin-Sitzungsdauer (Sekunden) oder bis der Benutzer den Browser schließt

Seit Magento 2.1 wird Lifetime for Admin Cookie als "Läuft beim Schließen des Browsers ab" zusammen mit Value in eingeführt Stores >Settings > Configuration > Advanced > Admin > Security > Admin Session Lifetime (seconds). Dies bedeutet, dass die Sitzungslebensdauer dem Wert in Stores > Settings > Configuration > Advanced > Admin > Security > Admin Session Lifetime (seconds)oder beim Schließen eines Browsers entspricht.

Oder Sie können einen neuen Wert für das Admin-Cookie festlegen , wie er in der Antwort von fschmengler vorgeschlagen wird

Arkadii Chyzhov
quelle
Möchten Sie die Funktionalität der Ebenen-Navigation auf unserer M2-Website anpassen?
Els den Iep
@ElsdenIep pls. finde meine Kontaktinformationen im Profil
Arkadii Chyzhov
Wissen Sie, wie lautet die Spalte in der Datenbank für diesen Wert, damit ich ihn programmgesteuert ändern kann?
Jojman
Ich habe es auf 50400 eingestellt, aber es meldet sich immer noch nach ungefähr 20 Minuten ab ....
OZZIE
@ArkadiiChyzhov siehe meine Antwort unten :)
OZZIE
16

Überprüfen Sie den Screenshot des angehängten Bildes für ein besseres Verständnis des Administrationsprozesses.

Gehen Sie zu Stores-> Settings-> Configuration-> Advanced-> Admin-> Security-> Admin Session Lifetime (seconds)

Und überprüfen Sie den Screenshot. Bildbeschreibung hier eingeben

Yogesh Trivedi
quelle
10

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->scopeConfigsollte 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.

Fabian Schmengler
quelle
Ich frage mich, ob Sie diesen Sicherheitsgrund erklären könnten. Aus meiner Sicht führt das Setzen der Lebensdauer von Admin-Cookies auf 0 zu Unstimmigkeiten und nicht offensichtlichem Verhalten, wenn wir "admin / security / session_lifetime" verwenden, das die Lebensdauer der Admin-Sitzung definiert und von 2.1 implizit von der Lebensdauer der Cookies abhängt.
Arkadii Chyzhov
1
Ich ging davon aus, dass verhindert werden soll, dass ein Administrator das Fenster schließt, ohne sich abzumelden, und dass alle Personen, die Zugriff auf denselben PC erhalten, bereits angemeldet sind. Dies ist keine große Bedrohung, und ich stimme Ihnen zu, dass dies eine schlechte Entscheidung ist um dieses "Merkmal" nicht offensichtlich zu machen.
Fabian Schmengler
Aber ich habe jetzt nach dem verantwortlichen Commit gesucht und Folgendes gefunden: github.com/magento/magento2/commit/… "MAGETWO-49092: Ungültiger Formularschlüssel auf der Admin-Anmeldeseite" - es klingt eher nach einer Problemumgehung, einen anderen Fehler mit einem weiteren auszublenden oder weniger zufällige und zumindest nicht dokumentierte Nebenwirkungen.
Fabian Schmengler
Es muss noch mehr los sein, da meine Sitzung immer noch abläuft, ohne meinen Browser zu schließen.
Matt Cosentino
1
@Volvox pass gut auf: Das Plugin ist für setCookieLifetime, eine öffentliche Methode mit Parametern
Fabian Schmengler
6

Hier ein Hinweis, die akzeptierte Antwort funktioniert, jedoch verwendet Magento 2 den Standard-PHP-Ordner zum Speichern von Sitzungsdateien, wenn Sie dies in PHP konfiguriert haben:

09,39 *     * * *     root   [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean

Dann wird dies durch die PHP-Installation zum System-Cron hinzugefügt.

Dann kannst du das auch

  • deaktiviere diesen cron
  • oder besser: Erhöhung der gc_maxlifetimephp.ini (da dies die Obergrenze ist)
OZZIE
quelle
2

Eine andere Lösung, ohne die Einstellungen zu ändern, ist die Installation von any auto refresh addonfür Ihren Browser und die Einstellung der Zeit (60 Sekunden).

Die Seite wird automatisch alle 60 Sekunden aktualisiert, wodurch das Ablaufen der Sitzungslebensdauer verhindert wird und wir mit der Arbeit an einem anderen Tab beginnen können.

Ich habe verwendet Easy Auto Refreshund es funktioniert gut für mich.

Amit Singh
quelle
Sei nicht albern mit solchen "Lösungen". Es ist völlig inakzeptabel.
Sellio
2

Wenn Sie mehrere VMs / Server für Web und DB verwenden und die Zeit nicht synchronisiert ist, wurde das Problem ebenfalls verursacht.

Wenn also alle oben genannten Optionen nicht funktionieren, überprüfen Sie den Zeitstempel / das Datum der beiden Server, wenn Sie mehrere Server für Web und DB verwenden.

Aunik Rahman
quelle
1

Ich weiß nicht warum, aber für einige von uns funktioniert die Einstellung der Admin-Sitzungslebensdauer über das Backend nicht. Deshalb habe ich einige Lösungen gefunden:

  1. Ändern Sie in der php.ini die session.gc_maxlifetime von 1440 auf die gewünschte Anzahl von Sekunden. (Diese Lösung hat bei mir funktioniert, getestet mit Magento 2.2.0 und 2.2.1)

  2. Fügen Sie in .htaccess "php_value session.gc_maxlifetime 28800" oder eine beliebige Anzahl von Sekunden hinzu.

  3. Durch manuelles Einstellen der Lebensdauer. Gehen Sie zu Hersteller / magento / module-encryption-key / etc / config.xml und ändern Sie den Wert von 900 auf die gewünschte Anzahl von Sekunden.

Ich hoffe, eine dieser Lösungen funktioniert auch für andere.

Sylaratty
quelle