2011-03-13 156 views
0

我有問題檢查用戶是否從UsersController以外的任何控制器登錄。從auth組件檢索用戶信息

我正在嘗試創建用戶個人資料頁面。我將它路由到PagesController,並且當我使用

$this->Auth->user() 

它總是返回空值。但是,如果我將它路由到UsersController它工作正常。這是爲什麼?登錄似乎工作正常。

回答

0

這是因爲您只在用戶的控制器中包含Auth組件。您應該將其包含在AppController和beforeFilter()中。這樣你就可以訪問所有的控制器。

+0

不,這不是那個。它包含在AppController中,如果我試圖在不包含的情況下訪問它,它會拋出錯誤。 – 2011-03-13 22:16:39

1

你app_controller.php:

class AppController extends Controller { 

    var $components = array('Auth', 'Session', 'Cookie'); 

    function beforeFilter() { 
     $this->Auth->authError = 'blabla'; 
     $this->Auth->loginError = 'blabla'; 
    } 

} 

在你的控制器:

function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Auth->allow('function1', 'function2', 'function3'); //etc 
    $this->Auth->autoRedirect = true; 
} 
+0

什麼是autoRedirect for?否則它基本上是我做的。除了我沒有添加cookies,不知道它是否重要 – 2011-03-13 22:19:39

+0

autoRedirect:在用戶登錄頁面後重定向用戶 – 2011-03-13 22:30:25