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