自定义模块控制器无法正常工作

时间:2017-01-06 07:06:02

标签: magento2

我在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或重定向到仪表板。

请帮我解决这个问题。

注意

我已为第一个网址添加了管理面板菜单。

1 个答案:

答案 0 :(得分:0)

当尝试访问后端(Adminhtml)中的模块/功能时,Magento会检查是否存在秘密Form Keys,以及是否有人确实尝试访问某个操作并且没有提供有效的FormKey和/或提供无效的FormKey - Adminhtml AbstractAction(Magento \ Backend \ App \ AbstractAction)将路由用户Admin UIX定义的Startup页面(通常是Dashboard页面)

[这种机制提供了一个安全检查点"防止用户访问他们无权访问的后端部分

要阻止检查FormKey,您有两个选择:

(a)关闭FormKey验证

导航商店 - >设置:配置 - >高级:管理员 - >安全 - >设置"为URL添加密钥"到"否"

记住这样做会关闭密钥验证非常重要,因此可能会使您的应用程序容易受到攻击。

How To Turn Off FormKey Validation

(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 /。