2013-11-15 24 views
0

我希望我的家(View/Pages/home.ctp)成爲一個公共視圖,導致每次嘗試訪問時,將我重定向到/ users/login .. AppController.php :CakePHP AuthComponent如何讓特定視圖

public $components = array(
     'Session', 
     'Auth' => array(
     'loginRedirect' => array('controller' => 'users', 'action' => 'areaRestrita'), 
     'logoutRedirect' => array('controller' => 'users', 'action' => 'logout'), 
      'authError' => 'Você deve fazer login para ter acesso a essa área!', 
      'loginError'=> 'Combinação de usuário e senha errada!' 
    ) 
    ); 

BeforeFilter:

public function beforeFilter() { 
     parent::beforeFilter(); 
     $this->Auth->allow('index'); 
    } 

我該怎麼辦?我試圖在pagesController.php上放一個beforeFilter來允許('顯示'),但不起作用。

+1

你可以把你的'beforefilter'回調代碼.. –

+0

好吧,我更新了.. –

+1

可能的重複[CakePHP在瀏覽應用程序的索引時仍然存在](http://stackoverflow.com/questions/18015096/cakephp -persists-to-log-in-when-browsing-apps-index) – ndm

回答

1

您允許使用身份驗證的操作不是視圖。 CakePHP的默認頁面控制器使用相同的display()動作來呈現所有靜態視圖。因此,如果您只想讓主頁爲其分別採取措施並將「/」路由到該操作,或者在beforeFilter()中使用$this->request->params來檢查請求是否用於主頁並使用$this->Auth->allow()

+0

我怎麼能用第二種方式?我試圖把這個'$ this-> Auth-> allow($ this-> request-> params ['requested']);'放在Pages中的beforeFilter中並且不起作用。 –

+0

'Auth-> allow()'採取動作名稱(或無參數)。 '$ this-> request-> params ['requested']'不是一個動作名稱。 – ADmad

+0

動作來自控制器?那麼,我必須爲每一個我想讓未記錄的用戶看到的頁面創建一個Controller?對不起,我是新手。 –