Ho scoperto che nella classe \Magento\Backend\App\AbstractAction
(l'antenato di ogni azione del controller di amministrazione) esiste un membro chiamato _publicActions
che viene utilizzato nella convalida della chiave segreta in questo modo:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
Ciò significa che se un determinato nome di azione è elencato in _publicActions
puoi accedere all'azione senza la chiave segreta nell'URL.
Questa è una benedizione per lo sviluppo e il debug, perché puoi semplicemente farlo come ROOT/admin/module/controller/action
manualmente, senza la necessità di conoscere la chiave di amministrazione segreta, ma ciò che non capisco è perché posso accedere alla pagina di modifica del prodotto senza la chiave segreta.
Chiama qualsiasi pagina di modifica del prodotto come questa ROOT/admin/catalog/product/edit/id/{product_id_here}
.
Il publicActions
membro viene sovrascritto per gli ordini (che consentono l'indice e la visualizzazione), nei prodotti (per la modifica) e nel controller di reindirizzamento per i reindirizzamenti.
Ora la mia domanda:
perché sono consentite solo alcune azioni di modifica senza la chiave segreta e quando / cosa dovrei consentire nei miei moduli CRUD personalizzati senza la chiave segreta?