0

我的 yii 应用程序中有很多控制器。所有这些只有在您登录后才能访问,否则您将被重定向到登录页面。但是我有一个控制器,其中包含一些应该可供所有人使用的操作。我如何配置 Yii 来实现这一点?

我在控制器的 accessRules() 函数中尝试了很多,但没有任何效果。

  public function accessRules() {
    return array(
        array('allow', 'users' => array('*'))
    );
  }

我希望不会被重定向到登录页面。

4

1 回答 1

0

目前尚不清楚您要使用该代码做什么。如果您打算让每个人都可以访问所有accessControl操作,请完全删除过滤器和accessRules()实现。

更新:

好吧,如果您的基础Controller将访问控制规则附加到所有应用程序控制器,您只需覆盖适当的方法即可恢复默认 行为

public function filters()
{
    return array();
}

public function accessRules()
{
    return array();
}

但是,如果Controller附加的过滤器不仅仅是accessControl您将不得不以某种方式找到哪一个是该accessControl行并仅删除该行。这不是微不足道的,因为那里有相当多的语法。

最后,Controller不应该那样做。如果您想在许多(但不是全部)一线控制器之间共享行为,那么您应该创建另一个类,例如并选择性地ControllerWithAccessControl从它派生。

于 2012-06-26T13:41:29.290 回答