Odkryłem, że w klasie \Magento\Backend\App\AbstractAction(przodku każdej akcji kontrolera administratora) istnieje element zwany członkiem, _publicActionsktóry jest używany do sprawdzania tajności klucza w następujący sposób:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
Oznacza to, że jeśli na liście znajduje się nazwa określonej akcji _publicActions, możesz uzyskać dostęp do akcji bez tajnego klucza w adresie URL.
Jest to błogosławieństwo dla programistów i debugowania, ponieważ możesz to zrobić ROOT/admin/module/controller/actionręcznie, bez potrzeby znajomości tajnego klucza administratora, ale nie rozumiem, dlaczego mogę uzyskać dostęp do strony edycji produktu bez tajnego klucza.
Wystarczy zadzwonić na dowolną stronę edycji produktu w ten sposób ROOT/admin/catalog/product/edit/id/{product_id_here}.
publicActionsCzłonek jest zastępowany dla zamówień (które pozwalają indeks view), w produktach (do edycji) i kontroler przekierowania dla przekierowań.
Teraz moje pytanie:
dlaczego dozwolone są tylko niektóre operacje edycji bez tajnego klucza i kiedy / na co mam pozwolić w moich niestandardowych modułach CRUD bez tajnego klucza?