Tôi hiện đang gặp sự cố với biểu mẫu lối vào trong đó các phím biểu mẫu bằng cách nào đó bị ghi đè và hiển thị các khóa biểu mẫu không chính xác. Tôi hiện đang gỡ lỗi vấn đề này trên mẫu đăng nhập của khách hàng.
Đây là ảnh chụp nhanh của mã tại login.phtml, mà tôi thiết lập để xem giá trị của formkey là gì.
<?php
$retrievedKey = $block->getBlockHtml('formkey');
echo $retrievedKey ;
// i made a breakpoint and inspected $retrievedKey, it returned a html output <input> ... </input> with a form key value of, let's name it 'keyA'.
?>
ok bây giờ sau khi tôi tiếp tục thực thi mã, nó kết xuất trang thành công.
Và bây giờ tôi sẽ kiểm tra khóa biểu mẫu ẩn trên trình duyệt chrome của mình, tuy nhiên, nó sẽ in ra một khóa biểu mẫu hoàn toàn khác với ' KeyA '. Hãy đặt tên cho khóa mẫu mới này là ' KeyB '.
Bây giờ tôi thử và đăng nhập, và gửi biểu mẫu. Tôi đã kiểm tra yêu cầu được gửi đi và nó thực sự vượt qua một biến giá trị khóa biểu mẫu phản ánh 'KeyB'.
Tôi đã đặt một số điểm dừng ở chức năng ' xác thực ' của
Magento \ Framework \ Data \ Form \ FormKey \ Trình xác thực
Đây là kiểm tra so sánh của tôi. Theo đúng, $ formKey và $ a phải khớp. Tuy nhiên, nó không.
$formKey = $request->getParam('form_key', null); // outputs 'KeyB'
$a = $this->_formKey->getFormKey(); // outputs 'KeyA'
Do đó, việc xác thực không thành công và nó chuyển hướng tôi trở lại trang đăng nhập mà không có thông báo lỗi nào.
Những điều cần lưu ý:
- Hành vi này chỉ phát sinh trong chrome và Microsoft EDGE.
- Firefox hoạt động tốt, không có ghi đè đang xảy ra
- Khóa biểu mẫu được in ra dường như đang thay đổi trên mỗi lần làm mới. $ lấy raKey không làm mới mỗi lần mặc dù
Những điều tôi đã thử:
- thiết lập: nâng cấp và thiết lập: tĩnh-nội dung: triển khai
- xóa var / cache và var / thế hệ
- xóa bộ nhớ cache của trình duyệt và chế độ ẩn danh
Tôi chỉ không thể quay đầu tại sao chìa khóa biểu mẫu bị ghi đè?
Bất kỳ trợ giúp hoặc gợi ý về lý do tại sao điều này đang xảy ra sẽ là tuyệt vời. Cảm ơn vì đã đọc
Cập nhật - Tôi đã thực hiện một số sửa lỗi và tôi đoán rằng trang-cache.js đang gây ra sự cố bằng cách đặt lại khóa biểu mẫu. Điều này là do thực tế là, nó đang kiểm tra cookie của tôi nếu cookie 'form_key' được đặt, nếu không, hãy tạo khóa biểu mẫu mới và lưu vào cookie. Vấn đề là, nó không thể lưu cookie, đó là lý do tại sao nó tiếp tục tạo các khóa biểu mẫu mới.
Cập nhật - Tôi đã giải quyết vấn đề. Điều này là do các vấn đề tên miền cookie. Cảm ơn