CakePHP 身份验证插件身份关联
CakePHP Authentication Plugin Identity Associations
我正在使用 CakePHP 3.8 并迁移到身份验证插件 (https://book.cakephp.org/authentication/1.1/en/index.html)。
在控制器中调用 $this->Authentication->getIdentity()->getOriginalData()
时,我想访问我的 User
实体的几个关联。
目前,我通过在我的 User
实体中实施以下 IdentityInterface
方法来做到这一点:
public function getOriginalData() {
$table = TableRegistry::getTableLocator()->get($this->getSource());
$table->loadInto($this, ['Activities', 'Clients']);
return $this;
}
但我觉得插件配置中的某处应该有一个 contain
参数(就像 AuthComponent
一样)。
谁能指导我如何在调用 getIdentity()
时在用户实体上包含关联?
旧Auth组件的认证对象的contain
选项在很久以前就被弃用了,推荐的方法是使用自定义finder,新认证也是这样做的插件。
ORM 解析器有一个 finder
选项,它必须通过使用的标识符进行配置,在您的情况下可能是密码标识符,例如:
$service->loadIdentifier('Authentication.Password', [
// ...
'resolver' => [
'className' => 'Authentication.Orm',
'finder' => 'authenticatedUser' // <<< there it goes
],
]);
在你的 table class(可能 UsersTable
)的 finder 方法中你可以包含你需要的任何东西:
public function findAuthenticatedUser(\Cake\ORM\Query $query, array $options)
{
return $query->contain(['Activities', 'Clients']);
}
另见
我正在使用 CakePHP 3.8 并迁移到身份验证插件 (https://book.cakephp.org/authentication/1.1/en/index.html)。
在控制器中调用 $this->Authentication->getIdentity()->getOriginalData()
时,我想访问我的 User
实体的几个关联。
目前,我通过在我的 User
实体中实施以下 IdentityInterface
方法来做到这一点:
public function getOriginalData() {
$table = TableRegistry::getTableLocator()->get($this->getSource());
$table->loadInto($this, ['Activities', 'Clients']);
return $this;
}
但我觉得插件配置中的某处应该有一个 contain
参数(就像 AuthComponent
一样)。
谁能指导我如何在调用 getIdentity()
时在用户实体上包含关联?
旧Auth组件的认证对象的contain
选项在很久以前就被弃用了,推荐的方法是使用自定义finder,新认证也是这样做的插件。
ORM 解析器有一个 finder
选项,它必须通过使用的标识符进行配置,在您的情况下可能是密码标识符,例如:
$service->loadIdentifier('Authentication.Password', [
// ...
'resolver' => [
'className' => 'Authentication.Orm',
'finder' => 'authenticatedUser' // <<< there it goes
],
]);
在你的 table class(可能 UsersTable
)的 finder 方法中你可以包含你需要的任何东西:
public function findAuthenticatedUser(\Cake\ORM\Query $query, array $options)
{
return $query->contain(['Activities', 'Clients']);
}
另见