Timeout della sessione di backend Magento 2


53

In Magento 1.x il timeout della sessione di backend è stato impostato tramite:
Backend -> System -> Configuration -> Admin -> Security -> Session Lifetime (seconds)

Inizialmente, la mia domanda era come impostarlo in Magento 2.0, ma apparentemente ci sono differenze tra Magento 2.0 e Magento 2.1

Per Magento 2.0: Arkadii Chyzhov ha sottolineato come impostarlo (vedi sotto).

Per Magento 2.1: fschmengler ha suggerito una soluzione (vedi sotto).

Tuttavia, M 2.1 sembra non fornire una soluzione semplice tramite il back-end. Qualcuno può trovare una soluzione aggiuntiva per M 2.1?

Risposte:


82

Negozi> Impostazioni> Configurazione> Avanzate> Ammin.> Sicurezza> Durata sessione amministratore (secondi)

Inoltre c'è la possibilità di impostare questo parametro direttamente sul database, basta inserire un valore nel percorso

admin / security / session_lifetime

nella tabella core_config_data

Aggiornare

Durata cookie cookie amministratore Magento 2.1 = Negozi> Impostazioni> Configurazione> Avanzate> Ammin.> Sicurezza> Durata sessione amministratore (secondi) o fino a quando l'utente non chiude il browser

Poiché Magento 2.1 introduce la durata del cookie di amministrazione come "scade alla chiusura del browser", insieme al valore in Stores >Settings > Configuration > Advanced > Admin > Security > Admin Session Lifetime (seconds). Ciò significa che la durata della sessione è uguale al valore in Stores > Settings > Configuration > Advanced > Admin > Security > Admin Session Lifetime (seconds)o alla chiusura di un browser.

Oppure puoi impostare un nuovo valore per il cookie di amministrazione, come viene proposto nella risposta di fschmengler


ti interesserebbe regolare la funzionalità della navigazione a più livelli sul nostro sito Web M2?
Els den Iep,

@ElsdenIep pls. trova le mie informazioni di contatto nel profilo
Arkadii Chyzhov,

Sai qual è la colonna nel database per quel valore, quindi posso cambiarla a livello di codice?
jojman,

L'ho impostato su 50400 ma si disconnette ancora dopo circa 20 minuti ....
OZZIE

@ArkadiiChyzhov vedi la mia risposta qui sotto :)
OZZIE

16

Controlla lo screenshot dell'immagine allegata per una migliore comprensione del processo di amministrazione.

Vai a Negozi-> Impostazioni-> Configurazione-> Avanzate-> Amministratore-> Sicurezza-> Durata sessione amministratore (secondi)

E controlla screenshot. inserisci qui la descrizione dell'immagine


10

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


Mi chiedo se potresti spiegare questo motivo di sicurezza. Dal mio punto di vista, l'impostazione della durata dei cookie dell'amministratore su 0, porta discrepanza e comportamento non ovvio, se stiamo usando "admin / security / session_lifetime", che definisce la durata della sessione di amministrazione e che dipende implicitamente dalla durata della cookie 2.1.
Arkadii Chyzhov,

1
Ho ipotizzato che sia per evitare che un amministratore chiuda la finestra senza "disconnettersi" e che chiunque abbia accesso allo stesso PC sia già connesso. Non si tratta di una grave minaccia e sono d'accordo con te che si tratta di una decisione sbagliata per rendere questa "caratteristica" non ovvia.
Fabian Schmengler,

Ma ho cercato il commit responsabile ora e ho trovato questo: github.com/magento/magento2/commit/… "MAGETWO-49092: Chiave del modulo non valida nella pagina di accesso dell'amministratore" - sembra più una soluzione alternativa nascondere un altro bug con un altro o meno effetti collaterali accidentali e almeno non documentati.
Fabian Schmengler,

Devono essercene altri, perché la mia sessione sta ancora scadendo senza chiudere il browser.
Matt Cosentino,

1
@Volvox guarda attentamente: il plugin è per setCookieLifetime, un metodo pubblico con parametri
Fabian Schmengler,

6

Una nota qui, la risposta accettata funziona comunque magento 2 usa la cartella php predefinita per archiviare i file di sessione, se lo hai configurato in php:

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

quindi questo viene aggiunto al cron del sistema dall'installazione di php.

Quindi puoi farlo anche tu

  • disabilita quel cron
  • o meglio: aumento gc_maxlifetimedi php.ini (poiché questo sarà il limite superiore)

2

Un'altra soluzione senza modificare alcuna impostazione è installarne una auto refresh addonper il tuo browser e impostarne l'ora (60 secondi).

Aggiorna automaticamente la pagina ogni 6o secondo, il che impedisce alla durata della sessione di scadere e possiamo iniziare a lavorare su un'altra scheda.

Ho usato Easy Auto Refreshe funziona bene per me.


non essere sciocco con tali "soluzioni". è totalmente inaccettabile.
sellio

2

Se si utilizzano più VM / server per web e db e l'ora non è sincronizzata, è stato causato anche il problema.

Pertanto, se tutte le opzioni sopra non funzionano, controllare la data / ora dei due server quando si utilizzano più server per web e db.


1

Non so perché, ma per alcuni di noi l'impostazione della durata della sessione di amministrazione dal back-end non funziona, quindi ho trovato un paio di soluzioni:

  1. In php.ini cambia session.gc_maxlifetime dal 1440 al numero di secondi che desideri. (Questa soluzione ha funzionato per me, testata su Magento 2.2.0 e 2.2.1)

  2. In .htaccess aggiungi "php_value session.gc_maxlifetime 28800" o al numero di secondi che desideri.

  3. Impostando manualmente la durata. Vai a fornitore / magento / modulo-chiave di crittografia / etc / config.xml e passa da 900s al numero di secondi che desideri.

Spero che una di queste soluzioni funzioni anche per gli altri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.