0

私のyiiアプリケーションにはたくさんのコントローラーがあります。それらはすべて、ログインしている場合にのみアクセスできます。それ以外の場合は、ログイン ページにリダイレクトされます。しかし、誰もがアクセスできるいくつかのアクションを備えたコントローラーが1つあります。それを実現するように 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 に答える