我发现在类\Magento\Backend\App\AbstractAction
(每个管理控制器操作的祖先)中,有一个称为的成员_publicActions
,用于验证密钥,如下所示:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
这意味着,如果其中列出了某个操作名称,则_publicActions
可以在URL中没有密钥的情况下访问该操作。
这是开发和调试的福气,因为您可以像ROOT/admin/module/controller/action
手动进行操作一样,而无需知道秘密管理员密钥,但是我不明白的是为什么我可以在没有秘密密钥的情况下访问产品编辑页面。
只需像这样调用任何产品编辑页面ROOT/admin/catalog/product/edit/id/{product_id_here}
。
在publicActions
订单(允许索引和查看),产品(用于编辑)和重定向控制器的重定向中,成员被覆盖。
现在我的问题是:
为什么在没有密钥的情况下只允许执行某些编辑操作,以及在什么时候/在没有密钥的情况下我的自定义CRUD模块中应该允许什么?