J'ai découvert que dans la classe \Magento\Backend\App\AbstractAction
(l'ancêtre de chaque action de contrôleur d'administration) il y a un membre appelé _publicActions
qui est utilisé dans la validation de la clé secrète comme ceci:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
Cela signifie que si un certain nom d'action est répertorié dans, _publicActions
vous pouvez accéder à l'action sans la clé secrète dans l'url.
C'est une bénédiction pour le développement et le débogage, car vous pouvez simplement le faire ROOT/admin/module/controller/action
manuellement, sans avoir besoin de connaître la clé d'administration secrète, mais ce que je ne comprends pas, c'est pourquoi puis-je accéder à la page d'édition du produit sans la clé secrète.
Appelez simplement n'importe quelle page d'édition de produit comme celle-ci ROOT/admin/catalog/product/edit/id/{product_id_here}
.
Le publicActions
membre est écrasé pour les commandes (qui permettent l'index et la vue), dans les produits (pour l'édition) et dans le contrôleur de redirection pour les redirections.
Maintenant ma question:
pourquoi seules certaines actions de modification sont autorisées sans la clé secrète, et quand / que dois-je autoriser dans mes modules CRUD personnalisés sans la clé secrète?