CakePHP身份验证插件身份关联

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CakePHP身份验证插件身份关联相关的知识,希望对你有一定的参考价值。

我正在使用Cakephp 3.8并迁移到身份验证插件(https://book.cakephp.org/authentication/1.1/en/index.html)。

[在控制器中调用$this->Authentication->getIdentity()->getOriginalData()时,我想访问我的User实体的几个关联。

此刻,我正在通过在IdentityInterface实体中实现以下User方法来做到这一点:

public function getOriginalData() 
  $table = TableRegistry::getTableLocator()->get($this->getSource());
  $table->loadInto($this, ['Activities', 'Clients']);
  return $this;

但是我觉得在插件配置中应该有一个contain参数(就像AuthComponent一样。

有人可以在引导getIdentity()时指导我如何在用户实体上包括关联吗?

答案

很早以前不推荐使用旧的Auth组件的身份验证对象的contain选项,推荐的方法是使用自定义查找程序,这也是在新的身份验证插件中完成的方式。

ORM解析器采用finder选项,并且必须通过使用的标识符进行配置,在您的情况下,该标识符可能是密码标识符,例如:

$service->loadIdentifier('Authentication.Password', [
    // ...
    'resolver' => [
        'className' => 'Authentication.Orm',
        'finder' => 'authenticatedUser' // <<< there it goes
    ],
]);

然后在表类的finder方法(可能是UsersTable中,您可以包含所需的任何内容:

public function findAuthenticatedUser(\Cake\ORM\Query $query, array $options)

    return $query->contain(['Activities', 'Clients']);

另请参见

以上是关于CakePHP身份验证插件身份关联的主要内容,如果未能解决你的问题,请参考以下文章

教程4 - 验证和权限

身份验证后重定向期间请求挂起

请求在身份验证后重定向期间挂起

具有两个模型会话的 Cakephp 身份验证组件

我无法在 Cakephp 4 中进行身份验证,错误 500

使用自定义身份验证适配器时检查 CakePHP 上的登录用户信息