Answers:
由于写在这里:
如果您使用受限管理员帐户,则第三方扩展名的某些菜单可能不再适用于它们。原因是默认的返回值Mage_Adminhtml_Controller_Action::_isAllowed()
已从更改true
为Mage::getSingleton('admin/session')->isAllowed('admin')
。由于不使用ACL而不在其管理控制器中覆盖此方法的扩展现在需要“ ALL”特权。
唯一的解决方案是修补扩展并将此方法添加到其所有管理控制器中:
protected function _isAllowed()
{
return true;
}
或者,如果它们实际上具有在中定义的ACL资源etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
这adminhtml.xml
可能是这样的:
使用下面的节点名称acl/resources/admin/children
,跳过以下children
节点。
如果只有一个<menu>
定义但没有<acl>
定义,则也可以定义自己的定义(不必在同一模块中,因此无需修改第3方文件):
将以下所有内容复制menu
到acl/resources/admin/children
并删除<action>
节点。
SupportDesk.nu提供了一个很好的命令行工具,网址为https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd
它可以_isAllowed()
很好地处理大多数遗漏的呼叫,但会导致代码模糊不清或加密的源文件,因此您仍然应该手动检查结果。
admin
,实际上,它仅对具有所有特权的用户返回true。
return true;
如果您的config.xml
或中没有为ACL定义任何内容,请不要只是这样做adminhtml.xml
。而是将权限添加到xml文件并正确检查。查看Alan Storm的网站,或在此处获取有关创建权限的信息。
<use>admin</use>
。它们通常会延伸Mage_Adminhtml_Controller_Action
。
它应该是:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('system/config');
}
在这种情况下,它会从Magento返回ACL设置。我只是想知道Magento核心团队是否会使用另一个补丁来修复它,或者应该在应用程序/代码/本地中将其作为全局Fix ...
app/code/local
,但仅当用户具有权限时才显示不带ACL的自定义扩展名,而System > Configuration
不是任何人想要的。