我的Yii-应用程序中有很多控制器。 所有这些都只有在您登录后才能访问,否则您将被重定向到登录页面。但是我有一个控制器,有一些操作,每个人都应该可以访问。我如何配置 Yii 来实现这一点?
我在控制器的accessRules()函数中尝试了很多,但没有任何效果。
public function accessRules() {
return array(
array('allow', 'users' => array('*'))
);
}
我希望不会被重定向到登录页面。
目前尚不清楚您要用该代码执行的操作。如果打算允许所有人访问所有操作,请完全删除accessControl
筛选器和accessRules()
实现。
更新:
好吧,如果你的基本Controller
将访问控制规则附加到所有应用程序控制器,你只需要覆盖适当的方法即可恢复默认行为:
public function filters()
{
return array();
}
public function accessRules()
{
return array();
}
但是,如果Controller
附加的过滤器不仅仅是accessControl
,您将不得不以某种方式找到哪一个是accessControl
行并仅删除该行。这并非微不足道,因为那里可以包含相当多的语法。
最后,Controller
不应该这样做。如果你想在许多(但不是全部)一线控制器之间共享行为,那么你应该创建另一个类,例如 ControllerWithAccessControl
并有选择地从中派生。