我在Magento 2中添加了一个示例自定义模块。我有两个用于管理面板页面的控制器功能,
http://127.0.0.1/magento2/admin_magento2/sample/index/index/
http://127.0.0.1/magento2/admin_magento2/sample/sampletwo/index/
第一个网址只显示页面。第二个显示404或重定向到仪表板。
请帮我解决这个问题。
注意
我已为第一个网址添加了管理面板菜单。
答案 0 :(得分:0)
当尝试访问后端(Adminhtml)中的模块/功能时,Magento会检查是否存在秘密Form Keys
,以及是否有人确实尝试访问某个操作并且没有提供有效的FormKey和/或提供无效的FormKey - Adminhtml AbstractAction(Magento \ Backend \ App \ AbstractAction)将路由用户Admin UIX定义的Startup页面(通常是Dashboard页面)
[这种机制提供了一个安全检查点"防止用户访问他们无权访问的后端部分
要阻止检查FormKey,您有两个选择:
(a)关闭FormKey验证
导航商店 - >设置:配置 - >高级:管理员 - >安全 - >设置"为URL添加密钥"到"否"
记住这样做会关闭密钥验证非常重要,因此可能会使您的应用程序容易受到攻击。
(b)关闭控制器的FormKey验证
在" $ _ publicActions"中指定您希望免除的操作,从FormKey检查中删除。管理员控制器的属性。
protected $ _publicActions = [' ENTER_NAME_OF_ACTION'];
代码示例:
class Index extends \Magento\Backend\App\Action
{
protected $_publicActions = ['index'];
public function execute()
{
echo "My Hello World! Controller";
}
}
从Admin UIX菜单访问选项时 - Magento会自动为您添加FormKey。这就是为什么您能够访问第一个无法访问第二个URL的URL v /。