Cakephp - 使用Auth时在控制器中获取用户ID

时间:2010-07-01 15:04:40

标签: cakephp

这似乎是一个两步过程,

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

一旦用户登录,是否存在某个变量集? (抱歉这个愚蠢的问题。)

7 个答案:

答案 0 :(得分:31)

我认为你可以$uid = $this->Auth->user('id'); - 检查api:http://api.cakephp.org/class/auth-component#method-AuthComponentuser

答案 1 :(得分: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,使用:( Althought using Cake你应该坚持约定)

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

还有更多的方法,这只是一些......

答案 2 :(得分:10)

试试这个:

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

答案 3 :(得分:5)

如果您无法使用Auth课程,也可以从会话中获取用户详细信息。

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

答案 4 :(得分:5)

CakePhp 2.x:

Anywhere的:

AuthComponent::user('id')

在控制器内:

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

答案 5 :(得分:0)

这可能没有用,但是$this->Auth->user();我遇到了错误原因这个问题已经解决了。我不确定问题的路径,但是在使用与我使用$this->Auth->user();相同的操作中从模型调用函数时出现了 使用AuthComponent::user('id')解决了问题。

答案 6 :(得分:0)

$this->Session已弃用

使用类似这样的东西

$session = $this->request->session();
$user_id = $session->read('Auth.User.id');