Magento 1.8.1.0 - SUPEE-7405 - Ajax调用重定向到非管理员帐户的仪表板

时间:2016-01-25 16:40:49

标签: php ajax magento

我刚刚在Magento 1.8.1.0上安装了SUPEE-7405补丁。

登录非管理员帐户后,我编辑购物车规则 (促销>购物车规则)

在第三个标签(动作)中,我添加一个新条件(类别),点击三个点后,我点击文本框右侧的窗口式按钮(应该显示给你的那个)一个类别列表)。

这是对" / promo_widget / chooser / attribute / category_ids / form / rule_actions_fieldset / key / 40c88f1400c874b61b75c5388b43af9f /?isjjax = true"

的ajax调用

ajax调用抛出403(禁止),然后页面重定向到仪表板。

在检查了补丁修改过的所有文件后,我无法弄清楚出了什么问题。

这在管理员帐户上运行正常,因此可能是ACL问题,但用户角色的权利很好,并且在修补程序之前有效。

2 个答案:

答案 0 :(得分:0)

听起来你需要先安装以前的Magento SUPEE补丁补丁(特别是SUPEE-6788),因为:

  

这是对" / promo_widget / chooser的ajax调用......"

这种形式的管理路由已弃用,SUPEE-6788会将其替换为" /index.php/admin/promo_widget/chooser ......"。

  

这在管理员帐户上运行正常,因此可能是ACL问题,但用户角色的权利很好,并且在修补程序之前有效。

SUPEE-6788还会更改管理员中的默认权限级别"允许所有"去除了所有"除非在管理员控制器中明确定义。

此更改意味着"超级管理员"角色用户将始终始终访问任何管理页面,因为该角色显示"允许所有"作为高级别标志,而其他角色可能具有单独的ACL设置,并且之前依赖于未特别设置为的"允许"而不是"拒绝。"在这种情况下,预计会有403权限被拒绝错误。

您可以通过将以下方法添加到模块的管理控制器来解决此问题(如果它是自定义模块):

/**
 * Check is allowed access to action
 *
 * @return bool
 */
protected function _isAllowed()
{
    return Mage::getSingleton('admin/session')->isAllowed('your/acl/path');
}

403权限被拒绝错误的另一种可能性是,由于它是一个AJAX请求,您可能需要确保将表单密钥添加到AJAX请求中。如果是这种情况,您可能已经修改了核心模板或使用本地主题版本覆盖了它。如果 ,请通过并比较您的模板版本与核心版本,并复制补丁中的任何更改。

Installing SUPEE-6788 is a pain in the a**如果你有自定义模块需要更新,但一般来说建议安装所有以前的安全补丁,然后再安装新补丁。

有用的资源是Magento StackExchange对SUPEE-7405更改的参考,以及哪些文件受到影响 - see here

答案 1 :(得分:0)

这是与受限管理员角色/ ACL规则相关的错误。

文件:app / code / core / Mage / Adminhtml / controllers / Promo / WidgetController.php

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

如果您只有"购物车价格规则"为管理员用户启用而不是"目录价格规则"那么当使用小部件时就会发生错误(比如" actions" -tab中的类别小部件。

有两种可能性来解决这个问题:

  1. 授予管理员角色访问目录价格规则的权限
  2. 覆盖方法" is_Allowed()"由:
  3. protected function _isAllowed() { return Mage::getSingleton('admin/session')->isAllowed('promo/catalog') || Mage::getSingleton('admin/session')->isAllowed('promo/quote'); }