在Yii的srbac中为未经授权的用户启用模块访问

时间:2013-08-26 18:06:26

标签: php yii module hybridauth

我正在尝试在Yii中使用hybridauth扩展名。如果没有srbac扩展,一切都很好,问题是我需要为未经授权的用户启用此模块的访问权限。我已尝试设置属性alwaysAllowed,如srbac guide中所述:

  

操作命名为   [的moduleId] / [子目录]。[ContollerId] [动作]

像这样:

'alwaysAllowed'=>array( //default: array()
            'SiteLogin','SiteLogout','SiteIndex','SiteAdmin',
            'SiteError', 'SiteContact','hybridauth@controllers.DefaultLogin'),

(我的分隔符是@),它不起作用。我一直在调试它,似乎Hybridauth控制器(DefaultController)在函数_extendsSBaseController(modules / srbac / controllers / AuthItemController.php)中不被识别为SBaseController:

if ($cont instanceof SBaseController) {
  return true;
}

我的Controller类正在扩展SBaseController,它适用于不在模块中的控制器,但不适用于此模块。我也尝试用SBaseController直接扩展DefaultController而没有运气。

如何将模块设置为alwaysAllowed?

1 个答案:

答案 0 :(得分:0)

已将hybridauth@DefaultIndexhybridauth@DefaultCallback添加到始终允许的列表中,现在可以正常运行。可以在函数srbac/Controllers/SBaseController.php中的beforeAction中看到此字符串的构造:

$access = $mod . $controller . ucfirst($this->action->id);