W Magento 1.x limit czasu sesji backend został ustawiony przez:
Backend -> System -> Configuration -> Admin -> Security -> Session Lifetime (seconds)
Początkowo moim pytaniem było, jak to ustawić w Magento 2.0, ale najwyraźniej istnieją różnice między Magento 2.0 i Magento 2.1
W przypadku Magento 2.0: Arkadii Chyzhov wskazał, jak to ustawić (patrz poniżej).
W przypadku Magento 2.1: fschmengler zaproponował rozwiązanie (patrz poniżej).
Wydaje się jednak, że M 2.1 nie zapewnia prostego rozwiązania poprzez backend. Czy ktoś może wymyślić dodatkowe rozwiązanie dla M 2.1?
Sprawdź zrzut ekranu dołączonego obrazu, aby lepiej zrozumieć proces administratora.
Przejdź do Sklepy-> Ustawienia-> Konfiguracja-> Zaawansowane-> Administrator-> Bezpieczeństwo-> Czas życia sesji administratora (sekundy)
I sprawdź zrzut ekranu.
źródło
Rozwiązanie dla Magento 2.1+
Od Magento 2.1 czas trwania sesji administratora to zawsze „sesja”, tj. Do czasu zamknięcia przeglądarki. To
byłmógł zostać wprowadzony ze względów bezpieczeństwa.Odpowiedni kod znajduje się w
Magento\Backend\Model\Session\AdminConfig
:Jeśli chcesz zmienić to zachowanie, możesz dodać wtyczkę do tej klasy za pomocą następującej metody przechwytywacza:
Gdzie
$this->scopeConfig
powinna być instancja\Magento\Framework\App\Config\ScopeConfigInterface
, wstrzykiwana przez parametr konstruktora.W ten sposób czas życia pliku cookie jest wykorzystywany z konfiguracji, podobnie jak w interfejsie użytkownika.
Pamiętaj, że konfiguracja w Sklepach> Konfiguracja> Zaawansowane> Bezpieczeństwo administratora> Czas życia sesji nie ma już wpływu na pliki cookie! Służy do określania czasu życia sesji Redis, więc jeśli wydłużysz czas życia ciasteczka, powinieneś również zwiększyć tę wartość.
źródło
setCookieLifetime
, publiczna metoda z parametramiUwaga: zaakceptowana odpowiedź działa, jednak magento 2 używa domyślnego folderu php do przechowywania plików sesji, jeśli skonfigurowano to w php:
to jest dodawane do crona systemowego przez instalację php.
Więc możesz albo
gc_maxlifetime
php.ini (ponieważ będzie to górny limit)źródło
Innym rozwiązaniem bez modyfikacji jakichkolwiek ustawień jest zainstalowanie dowolnego
auto refresh addon
dla przeglądarki i ustawienie jego czasu (60 sekund).Będzie automatycznie odświeżać stronę co 6o sekund, co zapobiega wygaśnięciu żywotności sesji i możemy rozpocząć pracę nad inną kartą.
Użyłem
Easy Auto Refresh
i działa dobrze dla mnie.źródło
Jeśli używasz wielu maszyn wirtualnych / serwerów dla sieci i bazy danych, a czas nie jest zsynchronizowany, również spowodował problem.
Więc jeśli wszystkie powyższe opcje nie działają, sprawdź znacznik czasu / datę dwóch serwerów, jeśli używasz wielu serwerów dla sieci i db.
źródło
Nie wiem dlaczego, ale dla niektórych z nas ustawienie czasu życia sesji administracyjnej z backendu nie działa, więc znalazłem kilka rozwiązań:
W php.ini zmień session.gc_maxlifetime z 1440 na dowolną pożądaną liczbę sekund. (To rozwiązanie działało dla mnie, przetestowane na Magento 2.2.0 i 2.2.1)
W .htaccess dodaj „php_value session.gc_maxlifetime 28800” lub dowolną liczbę sekund, którą chcesz.
Przez ręczne ustawienie czasu życia. Przejdź do dostawcy / magento / module-encryption-key / etc / config.xml i zmień z 900 na dowolną liczbę sekund.
Mam nadzieję, że jedno z tych rozwiązań będzie działać również dla innych.
źródło