Magento 2 arka uç oturum zaman aşımı


53

Magento 1.x'te arka uç oturumu zaman aşımı ile ayarlandı:
Backend -> System -> Configuration -> Admin -> Security -> Session Lifetime (seconds)

Başlangıçta, benim sorum bu Magento 2.0'da nasıl ayarlanacağıydı, fakat görünüşe göre Magento 2.0 ve Magento 2.1 arasında farklılıklar var.

Magento 2.0 için: Arkadii Chyzhov bunun nasıl ayarlanacağına dikkat çekti (aşağıya bakınız).

Magento 2.1 için: fschmengler bir çözüm önerdi (aşağıya bakınız).

Bununla birlikte, M 2.1, arka uç aracılığıyla basit bir çözüm sunmuyor gibi görünmektedir. M 2.1 için ek bir çözüm bulabilen var mı?

Yanıtlar:


82

Mağaza> Ayarlar> Yapılandırma> Gelişmiş> Yönetici> Güvenlik> Yönetici Oturumu Ömrü (saniye)

Ayrıca bu parametreyi doğrudan veritabanına ayarlama imkanı da vardır, sadece yola bir değer koyun.

admin / güvenlik / session_lifetime

Çekirdek_konfig_data tablosunda

Güncelleme

Magento 2.1 yönetici çerez ömrü = Mağazalar> Ayarlar> Konfigürasyon> Gelişmiş> Yönetici> Güvenlik> Yönetici Oturumu Ömrü (saniye) veya kullanıcı tarayıcıyı kapatana kadar

Yana Magento 2.1 olarak yönetici cookie için ömrünü tanıtır, "yakın tarayıcıda sona eriyor" birlikte değer Stores >Settings > Configuration > Advanced > Admin > Security > Admin Session Lifetime (seconds). Bu, oturum ömrünün Stores > Settings > Configuration > Advanced > Admin > Security > Admin Session Lifetime (seconds)bir tarayıcıdaki veya kapalı olduğu zamanki değere eşit olduğu anlamına gelir .

Veya fschmengler'in cevabında önerildiği gibi admin çerezi için yeni bir değer ayarlayabilirsiniz


M2 web sitemizdeki katmanlı navigasyonun işlevselliğini ayarlamak ister misiniz?
Els den Iep,

@ElsdenIep pls. Profildeki iletişim bilgilerimi bul
Arkadii Chyzhov

Veritabanındaki bu değerin sütununun ne olduğunu biliyor musunuz, böylece programlı olarak değiştirebilirim?
jojman

50400 olarak ayarladım ama hala yaklaşık 20 dakika sonra oturumu
kapattı

@ArkadiiChyzhov cevabımı aşağıya bakın :)
OZZIE

16

Yönetici sürecini daha iyi anlamak için ekli görüntü ekranını kontrol edin.

Mağazalar-> Ayarlar-> Yapılandırma-> Gelişmiş-> Yönetici-> Güvenlik-> Yönetici Oturumu Ömrü (saniye) seçeneğine gidin.

Ve ekran görüntüsünü kontrol edin. görüntü tanımını buraya girin


10

Magento 2.1+ için Çözüm

Magento 2.1'den beri yönetici oturumu ömrü her zaman "oturum" dur, yani tarayıcı kapatılana kadar. Buolmuştur güvenlik nedeniyle tanıtılmış olabilir.

İlgili kod şurada Magento\Backend\Model\Session\AdminConfig:

/**
 * Set session cookie lifetime to session duration
 *
 * @return $this
 */
protected function configureCookieLifetime()
{
    return $this->setCookieLifetime(0);
}

Bu davranışı değiştirmek istiyorsanız, aşağıdaki sınıf yöntemiyle bu sınıf için bir eklenti ekleyebilirsiniz:

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];
}

Nerede $this->scopeConfigbir örneği olmalıdır \Magento\Framework\App\Config\ScopeConfigInterfaceyapıcı parametre ile enjekte.

Bu şekilde, çerez ömrü, tıpkı ön uçtaki gibi, yapılandırmadan kullanılır.

Yapılandırma unutmayın Mağazalar> Yapılandırma> Gelişmiş> Yönetici Güvenlik> Oturum Ömür artık çerezleri üzerinde herhangi bir etkisi yoktur! Redis oturumunun ömrünü belirlemek için kullanılır, bu nedenle çerez ömrünü arttırırsanız, bu değeri de arttırmanız gerekir.


Bu güvenlik nedenini açıklayabilir misiniz diye merak ediyorum. Benim bakış açıma göre, yönetici tanımlama bilgisi ömrünü 0 olarak ayarlamak, yönetici oturumunun yaşam süresini tanımlayan ve tanımlama bilgisi kullanım süresine göre 2,1'e bağlı olan 'admin / security / session_lifetime' kullanıyorsak, tutarsızlık ve açık davranışlar getirmez.
Arkadii Chyzhov

1
Bir yöneticinin "oturumu kapatmadan" pencereyi kapatmasını ve aynı bilgisayara erişen herhangi bir kişinin giriş yaptığını önlemek olduğunu varsaymıştım. Bu büyük bir tehdit değil ve bunun sizin için kötü bir karar olduğuna katılıyorum bu "özelliği" bu belirgin hale getirmek için.
Fabian Schmengler

Ancak şu an sorumlu sorumluluğu aradım ve şunu buldum: github.com/magento/magento2/commit/… "MAGETWO-49092: Yönetici giriş sayfasındaki Geçersiz Form Anahtarı" - başka bir hatayı daha fazla olan başka bir hatayı gizlemek için geçici bir çözüm gibi görünüyor veya daha az rastlantısal ve en azından belgelenmemiş yan etki.
Fabian Schmengler,

Daha da fazlası olmalı, çünkü oturumum tarayıcımı kapatmadan süresi doluyor.
Matt Cosentino

1
@Volvox dikkatlice bakın: eklenti, setCookieLifetimeparametreleri ile ortak bir yöntem içindir
Fabian Schmengler 18:17

6

Buradaki bir not, kabul edilen cevap işe yarıyor ancak magento 2, php'de yapılandırılmışsa, oturum dosyalarını saklamak için varsayılan php klasörünü kullanıyor:

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

Daha sonra bu php kurulum tarafından sistem cron eklenir.

Yani o zaman ya

  • bu cronu devre dışı bırak
  • ya da daha iyisi: gc_maxlifetimephp.ini dosyasındaki artış (bu üst sınır olacaktır)

2

Herhangi bir ayarı değiştirmeden başka bir çözüm auto refresh addon, tarayıcınıza herhangi bir yükleme yapmak ve zamanını (60 saniye) ayarlamaktır.

Sayfayı her 6 saniyede bir otomatik olarak yenileyerek oturum ömrünün sona ermesini önler ve başka bir sekmede çalışmaya başlayabiliriz.

Ben kullandım Easy Auto Refreshve benim için iyi çalışıyor.


böyle "çözümler" ile aptal olmayın. tamamen kabul edilemez.
sellio

2

Web ve db için birden fazla VM / sunucu kullanıyorsanız ve zamanın senkronize olmaması da soruna neden oldu.

Bu nedenle yukarıdaki seçeneklerin tümü işe yaramazsa, web ve db için birden çok sunucu kullanırken iki sunucunun zaman damgasını / tarihini kontrol edin.


1

Nedenini bilmiyorum ama bazılarımız için Yönetici Oturumu Ömürünü arka uçtan ayarlamak işe yaramadı, bu yüzden birkaç çözüm buldum:

  1. Php.ini dosyasında session.gc_maxlifetime öğesini 1440'tan istediğiniz saniye sayısına kadar değiştirin. (Bu çözüm benim için çalıştı, magento 2.2.0 ve 2.2.1'de test edildi)

  2. .Htaccess içine "php_value session.gc_maxlifetime 28800" veya istediğiniz saniye sayısına ekleyin.

  3. Ömrü manuel olarak ayarlayarak. Git satıcı / magento / modül-şifreleme anahtar / etc / config.xml arzu saniye ne olursa olsun sayı 900s gelen ve değişim.

Bu çözümlerden birinin başkaları için de işe yarayacağını umuyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.