Необходимо ли переопределять _isAllowed в вашем контроллере администратора?
-
12-12-2019 - |
Вопрос
Метод _isAllowed - это то, где вы, как программист панели администратора, должны размещать свои проверки ACL.Как вы можете видеть, по умолчанию этот метод возвращает true.Это означает, что если вы не определите свой собственный _isAllowed метод, функции вашей панели администратора будут открыты для любого пользователя с Учетная запись панели администратора, и у людей, использующих ваш код, не будет возможности ограничить доступ к вашим функциям.Возможно, это не проблема, но это определенно то, о чем вы должны знать.
Источник: http://alanstorm.com/magento_acl_authentication
Без переопределения _isAllowed
(поэтому он всегда возвращает true как унаследованный от родительского класса), я попробовал использовать другую учетную запись в качестве роли, у которой этот ресурс не отмечен в разделе Разрешение -> Роль.
Используя эту учетную запись, я не могу видеть этот ресурс в меню администратора.Также при попытке получить доступ к этому ресурсу путем изменения URL-адреса я был перенаправлен на панель мониторинга.
Так что мне это кажется довольно безопасным, просто интересно, в чем причина (если таковая имеется), по которой нам лучше переопределить это _isAllowed
функция?
Решение
Видимость в меню администратора определяется не контроллером и его _isAllowed
метод, но непосредственно с помощью ACL.Если вы хотите, чтобы меню всегда было видимым и не управлялось ACL, не определяйте его в своих модулях adminhtml.xml
.
Перенаправление на панель мониторинга, если вы вводите URL вручную, вероятно, происходит из отсутствующего / неправильного key
параметр, который запрещает горячую ссылку на URL-адрес администратора, если включен следующий параметр:
Боковое примечание: Начиная с Magento 1.9.2 (и для всех предыдущих версий, в которых применено исправление безопасности SUPEE-6285), следующее больше не соответствует действительности:
Как вы можете видеть, по умолчанию этот метод возвращает true.Это означает, что если вы не определите свой собственный метод _isAllowed, функции вашей панели администратора будут открыты для любого пользователя с учетной записью панели администратора, и люди, использующие ваш код, не смогут ограничить доступ к вашим функциям
Теперь по умолчанию он возвращает значение true только в том случае, если пользователь имеет Полный доступ администратора.Это означает, что если вы не переопределите _isAllowed()
, ваше меню недоступно ни для одного ограниченного пользователя.
Идея, лежащая в основе этого изменения, заключается в том, чтобы отказоустойчивый вместо того , чтобы безотказный, т. е.предпочитаю ошибаться в пользу безопасности.