1

UsersControllerユーザーに関するすべてを処理する を作成した CakePHP アプリを作成しました。を参照しようとするとwww.mydomain.com、ログインしている場合は、インデックス ( app/View/Pages/home.ctp) が表示されます。それ以外の場合は、リダイレクトされmydomain.com/users/login、ログインし続けます。

AppController.phpPagesController.phpまたはapp/Config/core.php、およびを調べてみましapp/Config/routes.phpたが、何も見つかりませんでした。私UsersController.phpも、それについては責任を負わないと思います。

覚えていませんし、これを無効にする方法が見つかりません。それを担当するのはどのファイルですか?

編集: 私の CakePHP のバージョンは 2.3 です。

4

1 に答える 1

2

通常、認証コンポーネントallow()メソッドを使用して、特定のアクションを公開できます。

PagesControllerはすべてのページを 1 回のアクションで処理するため、特定のページのみを公開する場合は、ページを公開するのに少し手間がかかる場合があります( display())。その場合、request->params['pass'][0]ページ名を保持する which を利用し、許可されたページのリストに対してこれをテストしてから、 を使用してdisplayアクションを許可できAuth::allowます。

PagesController:

public function beforeFilter()
{
    parent::beforeFilter();

    $allowedPages = array('home', 'foo', 'bar');
    if(isset($this->request->params['pass'][0]) &&
       in_array($this->request->params['pass'][0], $allowedPages))
    {
        $this->Auth->allow('display');
    }
}

これにより、ログインせずにページを表示homeできるようにfooなります。bar

すべてのページを公開したい場合はAuth::allow、条件なしで簡単に使用できます。

public function beforeFilter()
{
    parent::beforeFilter();
    $this->Auth->allow('display');
}
于 2013-08-02T13:57:46.867 に答える