Descobri que na classe \Magento\Backend\App\AbstractAction
(o ancestral de todas as ações do controlador administrativo) existe um membro chamado _publicActions
usado na validação da chave secreta como esta:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
Isso significa que, se um determinado nome de ação estiver listado, _publicActions
você poderá acessar a ação sem a chave secreta no URL.
Essa é uma bênção para o desenvolvimento e a depuração, porque você pode fazê-lo ROOT/admin/module/controller/action
manualmente, sem a necessidade de conhecer a chave administrativa secreta, mas o que não entendo é por que posso acessar a página de edição do produto sem a chave secreta.
Basta ligar para qualquer página de edição de produtos como esta ROOT/admin/catalog/product/edit/id/{product_id_here}
.
O publicActions
membro é substituído por pedidos (que permitem indexar e exibir), em produtos (para edição) e no controlador de redirecionamento para redirecionamentos.
Agora, minha pergunta:
por que apenas algumas ações de edição são permitidas sem a chave secreta e quando / o que devo permitir em meus módulos CRUD personalizados sem a chave secreta?