2010-07-01 35 views
14

這似乎是一個兩步的過程來得到這個,CakePHP的 - 使用驗證

$u = $this->Auth->user(); 
    $uid = $u['User']['id']; 

是不是有什麼地方設置一旦用戶一個變量登錄時獲得用戶ID控制器? (對不起,愚蠢的問題。)

回答

10

試試這個:

$this->Auth->user('id') 
+0

警告 - 這項工作在cakephp 3上。x – Rod 2017-10-06 17:47:52

4

您也可以從當會話獲得用戶的詳細信息Auth類不適用於您。

$this->Session->read('Auth.User.id') 
+1

如果您沒有在AppController級別註冊AuthComponent,這會很有幫助 – 2012-11-27 19:23:26

16

在CakePHP有幾種方法可以從會話獲得用戶ID,這裏有幾個例子

爲了讓控制器使用中的會話的用戶ID:

$uid = $this->Auth->User('user_id'); 

要獲取視圖中的會話用戶ID,請使用:(不推薦,我將在控制器中設置此項)

$uid = $this->Session->read('Auth.User.id'); 

獲取會話用戶ID的模型中,使用方法:(不推薦,但解決方案)

$uid = CakeSession::read('Auth.User.id'); 

我不建議以上從內部獲取會話的用戶ID在模型中,我將通過控制器通過它,使用:

$this->Model->function($uid); 

您還可以通過純PHP獲取會話的用戶ID,使用:操作(雖然使用蛋糕,你應與公約棒)

$uid = $_SESSION['Auth']['User']['id']; 

而且有更多的途徑中,這僅僅是幾...

+2

這是一個很好的答案,這應該是標記爲接受的答案 – justinhartman 2013-10-11 16:05:03

+0

+1,用於推薦從控制器傳遞到模型,而不是調用' CakeSession :: read('Auth.User.id');'在模型中。 – Fr0zenFyr 2015-09-11 10:40:18

5

CakePHP的2.x的:

任何地方:

AuthComponent::user('id') 

控制器內部:

$this->Auth->user('id'); 
0

這可能是沒用的,但是我的錯誤原因是$this->Auth->user();這個問題是用這個來解決的。我不確定這個問題的路線,但是當它從一個模型中調用一個函數的時候,它就出現了,就像我使用$this->Auth->user(); 使用AuthComponent::user('id')解決了這個問題。