我有問題檢查用戶是否從UsersController以外的任何控制器登錄。從auth組件檢索用戶信息
我正在嘗試創建用戶個人資料頁面。我將它路由到PagesController,並且當我使用
$this->Auth->user()
它總是返回空值。但是,如果我將它路由到UsersController它工作正常。這是爲什麼?登錄似乎工作正常。
我有問題檢查用戶是否從UsersController以外的任何控制器登錄。從auth組件檢索用戶信息
我正在嘗試創建用戶個人資料頁面。我將它路由到PagesController,並且當我使用
$this->Auth->user()
它總是返回空值。但是,如果我將它路由到UsersController它工作正常。這是爲什麼?登錄似乎工作正常。
這是因爲您只在用戶的控制器中包含Auth組件。您應該將其包含在AppController和beforeFilter()中。這樣你就可以訪問所有的控制器。
你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;
}
什麼是autoRedirect for?否則它基本上是我做的。除了我沒有添加cookies,不知道它是否重要 – 2011-03-13 22:19:39
autoRedirect:在用戶登錄頁面後重定向用戶 – 2011-03-13 22:30:25
不,這不是那個。它包含在AppController中,如果我試圖在不包含的情況下訪問它,它會拋出錯誤。 – 2011-03-13 22:16:39