Giải pháp cho Magento 2.1+
Vì Magento 2.1, thời gian tồn tại của quản trị viên luôn là "phiên", tức là cho đến khi trình duyệt được đóng. Điều nàyđã được có thể đã được giới thiệu vì lý do bảo mật.
Mã có liên quan là Magento\Backend\Model\Session\AdminConfig
:
/**
* Set session cookie lifetime to session duration
*
* @return $this
*/
protected function configureCookieLifetime()
{
return $this->setCookieLifetime(0);
}
Nếu bạn muốn thay đổi hành vi này, bạn có thể thêm một plugin cho lớp này bằng phương thức chặn sau:
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];
}
Trường hợp $this->scopeConfig
nên là một thể hiện của \Magento\Framework\App\Config\ScopeConfigInterface
, được tiêm thông qua tham số hàm tạo.
Bằng cách này, tuổi thọ của cookie được sử dụng từ cấu hình, giống như trong frontend.
Lưu ý rằng cấu hình trong Cửa hàng> Cấu hình> Nâng cao> Bảo mật quản trị viên> Thời gian tồn tại của phiên không còn ảnh hưởng đến cookie nữa! Nó được sử dụng để xác định tuổi thọ phiên Redis, vì vậy nếu bạn tăng tuổi thọ cookie, bạn cũng nên tăng giá trị này.