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

wqsoz72f  于 2022-11-11  发布在  PHP
关注(0)|答案(9)|浏览(188)

看起来需要两个步骤才能完成,

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

在用户登录后,是否在某处设置了一个变量?(抱歉问了这个愚蠢的问题。)

9njqaruj

9njqaruj1#

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

x3naxklr

x3naxklr2#

在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,用途:(虽然使用Cake,但应遵守惯例)

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

还有更多的方法,这只是几个...

dwbf0jvd

dwbf0jvd3#

试试看:

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

h7appiyu4#

如果Auth类不可用,还可以从会话中获取用户详细信息。

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

vdgimpew5#

蛋糕Php 2.x:

任何地方:

AuthComponent::user('id')

在控制器内部:

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

up9lanfz6#

即使这个问题被张贴的方式之前,目前的版本,我会回答如何在Cakephp v4.x,因为我只是需要它,并得到了一个艰难的时间找到这些信息,它可能是有用的其他人.

$identity = $this->request->getAttribute('authentication')->getIdentity();

现在,您有了一个类似于IdentityInterface ORM的对象,它从以您用来跟踪用户的DB表命名的对中返回值。

$identity['email']
$identity['full_name']
$identity['id']
// etc
7uhlpewt

7uhlpewt7#

$this->Session被弃用了,就像Simon上面说的那样,但是现在$this->request->session();也被弃用了,就目前而言,作为2021年8月和CakePhp 4,正确的答案是:

$this->request->getSession()->read('User.id');
dtcbnfnu

dtcbnfnu8#

这可能是没有用的,但我有一个错误导致的$this->Auth->user();这个问题是用这个来解决的。我不确定问题的路线,但它出现在调用一个函数从一个模型在同一个行动,因为我使用$this->Auth->user();使用AuthComponent::user('id')解决了问题。

kuhbmx9i

kuhbmx9i9#

不建议使用$this->Session
用这样的东西

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

相关问题