【问题标题】:Access Denied after applying Magento SUPEE 6285应用 Magento SUPEE 6285 后访问被拒绝
【发布时间】:2015-09-27 00:26:19
【问题描述】:

我最近应用了 Magento 补丁 SUPEE-6285,现在我遇到了一些非管理员用户的权限问题。无法再访问的受限用户可以访问管理员的某些部分。如果我查看角色的角色资源,我会看到该部分已启用,并且当登录到该角色时,我会看到菜单选项,但如果我选择它,我会得到拒绝访问。到目前为止,我所知道的给我带来麻烦的 3 个扩展是

  1. 商务主题 - 注册客户猜测
    • 他们在“客户”菜单下添加了“管理访客注册”
  2. Adjustware - 废弃购物车警报
    • 他们在时事通讯下添加菜单项
  3. Adjustware - 查看提醒
    • 他们在时事通讯下添加菜单项

我确定还有其他扩展存在类似问题,这可能是由于他们如何实现管理页面,但我还没有弄清楚。谁有解决办法?

更新 我尝试更改路由器的定义方式,但没有帮助。

是:

<admin>
    <routers>
        <GuestToReg>
            <use>admin</use>
            <args>
                <module>CommerceThemes_GuestToReg</module>
                <frontName>GuestToReg</frontName>
            </args>
        </GuestToReg>
    </routers>
</admin>

改为:

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <GuestToReg after="Mage_Adminhtml">CommerceThemes_GuestToReg_Adminhtml</GuestToReg>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

【问题讨论】:

  • 也在 Magento.StackExchange 中回答过,更多信息请参阅 => magento.stackexchange.com/questions/73646/… 以及此更改和其他更改,magento.stackexchange.com/questions/73481/…
  • 谢谢@FiascoLabs,我在发帖之前找不到这些。
  • 不客气!必须将修复应用到订单输入使用的一个模块,这样它的大规模操作就不会弹出“访问被拒绝”消息并首先遇到这些消息,所以我想我会链接到这里,这样会有更多信息。

标签: php magento permissions acl magento-1.9.1


【解决方案1】:

BrianVPS 掌握了“最佳实践”答案的要点,但当然,需要根据预期用途为每个模块和/或控制器修改确切的 sn-p。

某些模块对其页面没有特定权限,在这种情况下 - 除非您自己向 acl 添加新的权限路径,否则您唯一的选择是返回 true。

但是,如果 acl 权限路径确实存在并且正在使用(他们通常用于确定页面是否在管理菜单栏中绘制),您必须找到该权限路径并替换 isAllowed 中的示例字符串功能。

例如,在 CommerceThemes/GuestToReg 代码中,您可以在 etc/adminhtml.xml 下找到定义的 acl 路径。

<acl>
    <resources>
        <admin>
            <children>
                <customer>
                    <children>
                        <guesttoreg_adminform>

根据这些路径,设置页面访问权限的正确权限应该是:

protected function _isAllowed() {
    return Mage::getSingleton('admin/session')->isAllowed('customer/guesttoreg_adminform');
}

放置在管理控制器文件中: app/code/local/CommerceThemes/GuestToReg/controllers/Adminhtml/GuestToRegFormController.php

【讨论】:

    【解决方案2】:

    你可以在下一个链接中看到这个问题的完整解释和解决方法:Solution to the problem of permissions for non-administrators in modules after applying the patch 6285_CE_1.9.1.1 or upgrade to Magento 1.9.2.

    当我们更新/修补我们的 Magento 安装时,它会对 Magento 对模块的行为方式进行小幅更改。以前,如果控制器模块的 _isAllowed() 方法不存在,Magento 默认响应为 true。在版本 1.9.2 或我们修补以前的版本时,它不再以这种方式运行,因此没有管理员权限的用户无法访问已安装的模块。

    要恢复非管理员对模块的访问权限,我们只需将函数添加到相应的控制器即可。

    protected function _isAllowed() 
    { 
    return true; 
    }
    

    【讨论】:

    • 这是对问题的一个很好的解释,但又是一个危险的解决方案。请参阅上面我接受的答案。这是相同的基本思想,但您应该使用 ACL 路径只允许应该有权访问的用户访问。无论您向任何人打开它,都返回 true 并有效地取消安全更新。
    【解决方案3】:

    多亏了 Ron V,我才能够找到完整的答案,该答案仅对那些获得许可的人启用菜单。

    给定以下 adminhtml.xml 文件:

    <config>
        <acl>
            <resources>
                <admin>
                    <children>
                        <path_to>
                            <children>
                                <acl_resource>
                                    <title>My ACL Resource</title>
                                </acl_resource>
                            </children>
                        </path_to>
                    </children>
                </admin>
            </resources>
        </acl>
    </config>
    

    您可以提取资源路径以传递给isAllowed() 以确定是否应向该用户显示此菜单。

    protected function _isAllowed(){
        return Mage::getSingleton('admin/session')->isAllowed('path_to/acl_resource');
    }
    

    【讨论】:

      【解决方案4】:

      我只是将以下代码放在导致问题的扩展的控制器中:

      protected function _isAllowed(){ 
        return true; 
      }
      

      此更新需要在 Adminhtml 中包含脚本的扩展以更安全。

      【讨论】:

      • 谢谢@ron-v!这可以启用菜单,但它只是一个创可贴。它为每个人启用菜单,即使他们没有被授予权限。我做了一些搜索,只为有权限的人启用,return Mage::getSingleton('admin/session')-&gt;isAllowed('path_to/acl_resource');
      • 如果没有adminhtml.xml,有没有其他获取acl资源的方法?
      • adminhtml.xml 是较新的 Magento(我认为是 1.5+?)。 ACL 资源曾经位于config.xml。当它在config.xml 中时,您只需将它放在&lt;config&gt;&lt;adminhtml&gt;...&lt;/adminhtml&gt;&lt;/config&gt; 块中。一个很好的资源是Alan Storm's Blog
      猜你喜欢
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多