Tùy thuộc vào trường hợp sử dụng, hầu hết các giải pháp được đề xuất đều có vấn đề: Chuyển hướng có thể được lưu trong bộ nhớ cache, do các vị trí khác nơi phản hồi được đặt.
Kịch bản: Bạn thực hiện chuyển hướng dựa trên trạng thái đăng nhập -> ngay cả sau khi đăng nhập, trang được bảo vệ mà họ đã cố truy cập trước khi đăng nhập vẫn chuyển hướng, vì phản hồi 302 được lưu trong một ngày.
Tôi đã kết thúc việc này:
if (!$isCustomerLoggedIn && !in_array($actionFullName, self::ALLOWED_ROUTES)) {
$response = $observer->getEvent()->getControllerAction()->getResponse();
$response->clearHeaders();
$this->redirect->redirect($response, 'customer/account/login');
}
EDIT không hoạt động -> ClearHeaders giết FPC - làm việc trên một giải pháp thay thế
EDIT2 Giải pháp tốt hơn:
/**
* @var $action Action
*/
$action = $observer->getEvent()->getControllerAction();
/**
* @var $response \Magento\Framework\App\Response\Http
*/
$response = $action->getResponse();
$response->clearHeaders()->setNoCacheHeaders();
$this->redirect->redirect($response, 'customer/account/login');