一般的にauthコンポーネントのallow()メソッドを使えば、特定のアクションをパブリックにすることができます。
特定のページのみパブリックにしたい場合は、もう少し作業が必要になります。
なぜならPagesControllerは、すべてのページを一つのアクション(display())で扱うからです。
これを行いたいのであれば、request->params['pass'][0]
を使うことができます。
これはページの名前を格納し、許可されているページのリストと比べられAuth::allow
を使ってdisplayアクションを許可します。
例, PagesController:
lang
1public function beforeFilter()
2{
3 parent::beforeFilter();
4
5 $allowedPages = array('fuga', 'hoge', 'foo');
6 if(isset($this->request->params['pass'][0]) &&
7 in_array($this->request->params['pass'][0], $allowedPages))
8 {
9 $this->Auth->allow('display');
10 }
11}
これはfuga、hoge、fooのページをログインされていない状態でも、閲覧できるようになります。
すべてのページをパブリックにしたいときは、何も条件を付けずにAuth::allowを使うことができます。
lang
1public function beforeFilter()
2{
3 parent::beforeFilter();
4 $this->Auth->allow('display');
5}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。