2010-07-01 92 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')解决了这个问题。