我正在尝试在Yii中使用hybridauth扩展。如果没有srbac扩展,一切都很好,问题是我需要为使用它的未经授权的用户启用对该模块的访问。我已经尝试设置属性alwaysAllowed,如srbac指南中所述:
操作命名为[模块ID]/[子目录]。[ControllerId][Action]
像这样:
'alwaysAllowed'=>array( //default: array()
'SiteLogin','SiteLogout','SiteIndex','SiteAdmin',
'SiteError', 'SiteContact','hybridauth@controllers.DefaultLogin'),
(我的分隔符是@),它不起作用。我一直在调试它,在函数_extendsSBaseController(modules/srbac/controllers/AuthItemController.php):中,Hybridauth控制器(DefaultController)似乎没有被识别为SBaseController
if ($cont instanceof SBaseController) {
return true;
}
我的Controller类正在扩展SBaseController,它适用于不在模块中的控制器,但不适用于此。我还尝试过用SBaseController直接扩展DefaultController,但没有成功。
如何将模块设置为始终允许?
我已经将hybridauth@DefaultIndex
和hybridauth@DefaultCallback
添加到所有允许的列表中,现在它可以工作了。这个字符串的构造可以在函数beforeAction
:中的srbac/Controllers/SBaseController.php
中看到
$access = $mod . $controller . ucfirst($this->action->id);