2013-01-11 77 views
0

在使用AuthComponent的CakePHP 2.2上,如果用戶已經通過身份驗證,將用戶從「/」重定向到「/ users」的最佳方式是什麼?我所有的搜索都剛剛顯示了有關AuthComponent的loginRedirect和相關信息。我閱讀了一篇詳細介紹改變路線的文章(1.x版),但我不確定這是否仍然是最好的方法。我還可以插入CakePHP:如果用戶被認證,將用戶從/重定向到

if($path[0] == 'home' && $this->Session->check('Auth.User')){ 
    $this->redirect('/users/'); 
} 
中的PageController

::顯示(),但同樣,不知道這是最不可取的方法

此應用程序的索引頁面將簡單地要求用戶頁面註冊或登錄,因此它不太重要到已經登錄會員

編輯: 重溫beforeFilter()方法後,我想出了

public function beforeFilter() { 
    $this->Auth->allow('*'); 

    if($this->request->params['pass'][0] == 'home' && $this->Session->check('Auth.User')) 
     $this->redirect('/users'); 
} 

但這看起來確實是靜態的。

回答

0

正確的方法是從控制器的beforeFilter方法重定向用戶。從.ctp文件重定向不好。

//在PagesController.cpp

beforeFilter() { 
    if($path[0] == 'home' && $this->Session->check('Auth.User')){ 
     $this->redirect('/users/'); 
    } 
} 

某種類似:
CakePHP Auth component redirect issue

+0

我修改的標題,以消除混淆;有了home.ctp,我只是簡單地暗示了根URL - 重定向實際上並不在ctp文件中。 你的方法敦促我重新審視beforeFilter,使用Session :: check而不是檢查Auth-> user,它可以工作。工作代碼粘貼在我原來的帖子上面。 – Neil

+0

不要忘記在派生函數內調用父控制器的beforeFilter函數。 – trante

相關問題