Tôi đã phát hiện ra rằng trong lớp \Magento\Backend\App\AbstractAction
(tổ tiên của mọi hành động của trình điều khiển quản trị viên) có một thành viên được gọi _publicActions
là được sử dụng để xác thực khóa bí mật như thế này:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
Điều này có nghĩa là, nếu một tên hành động nhất định được liệt kê trong _publicActions
bạn có thể truy cập hành động mà không cần khóa bí mật trong url.
Đây là một điều may mắn cho sự phát triển và gỡ lỗi, bởi vì bạn chỉ có thể làm điều đó một ROOT/admin/module/controller/action
cách thủ công mà không cần biết khóa quản trị bí mật, nhưng điều tôi không hiểu là tại sao tôi có thể truy cập trang chỉnh sửa sản phẩm mà không cần khóa bí mật.
Chỉ cần gọi bất kỳ trang chỉnh sửa sản phẩm như thế này ROOT/admin/catalog/product/edit/id/{product_id_here}
.
Thành publicActions
viên được ghi đè cho các đơn đặt hàng (cho phép chỉ mục và chế độ xem), trong các sản phẩm (để chỉnh sửa) và trong bộ điều khiển chuyển hướng cho các chuyển hướng.
Bây giờ câu hỏi của tôi:
Tại sao chỉ một số hành động chỉnh sửa được phép mà không có khóa bí mật và khi nào / tôi nên cho phép điều gì trong các mô-đun CRUD tùy chỉnh của mình mà không có khóa bí mật?