在CakePHP 4.x之前的版本中,它有一个简单的Auth
组件,用于设置身份验证/授权,并使其非常容易地完成诸如用一行代码获得登录用户ID之类的事情。
在4.x中,Auth
组件已被删除,并拆分为单独的Authentication和Authorization组件。
似乎缺少关于如何使用这两个新组件的信息(文档非常稀疏,GitHub上的README几乎没有提供使用信息)。
到目前为止,我所做的是:
按照CMS Tutorial设置一个CakePHP 4.3.7应用程序,同时使用身份验证和授权。
我在一个Controller方法中添加了以下代码。我之所以能够找到这些代码是因为有人在Cakephp - get user id in controller when using Auth上发布了一个更新的答案--实际上似乎没有任何地方记录到这些代码:
$identity = $this->request->getAttribute('authentication')->getIdentity();
debug($identity);
这给出:
object(Authentication\Identity) id:0 {
'config' => [ ]
'data' => object(App\Model\Entity\User) id:1 {
'id' => (int) 7
'first_name' => 'Andy'
'last_name' => 'My Last Name'
'email' => 'andy@example.com'
如果我执行debug($identity->data->id);
,我希望能够读取该对象的id
属性,并让它返回我的用户ID,在本例中为7,它给出null
。
我不禁认为这是一种错误的方法,应该有一种简单的方法来返回登录的用户ID,因为在任何用例中几乎都需要这样做。
请有人指出这是在文件中的位置,或者建议如何实现?
2条答案
按热度按时间92vpleto1#
我找到了一个答案,我张贴,因为它的工作,虽然我不是100%肯定,如果这是正确的方式。
如果你有其他的方法,请张贴一个答案。
我在原始问题中发布的堆栈溢出link具有误导性;"这不符合我的需要“
我发现https://discourse.cakephp.org/t/display-the-data-of-a-logged-in-user/8160建议您可以用途:
然后,您可以读取这个的属性,例如。
您还可以读取
users
数据库表中用户的任何其他属性,例如t1qtbnec2#
您可以使用身份验证组件获取经过身份验证的用户标识数据:
您也可以直接从请求示例获取标识:
文件上写着:https://book.cakephp.org/authentication/2/en/authentication-component.html#accessing-the-logged-in-user