Authentication CakePHP 3.x-在创建会话之前修改Auth组件中的用户数据

Authentication CakePHP 3.x-在创建会话之前修改Auth组件中的用户数据,authentication,cakephp,orm,cakephp-3.0,Authentication,Cakephp,Orm,Cakephp 3.0,在CakePHP 3中使用Auth组件时,您可以定义findAuth查找器或配置不同的查找器来控制加载的数据: // AppController $this->loadComponent('Auth', [ //... 'authenticate' => [ 'Form' => [ 'finder' => 'auth' ] ], //... ]); // UsersTable pu

在CakePHP 3中使用Auth组件时,您可以定义findAuth查找器或配置不同的查找器来控制加载的数据:

// AppController
$this->loadComponent('Auth', [
    //...
    'authenticate' => [
        'Form' => [
            'finder' => 'auth'
        ]
    ],
    //...
]);


// UsersTable
public function findAuth($query, array $options)
{
    return $query
        ->...;
}
我需要一些查询生成器无法完成的功能。在创建会话之前,如何对加载的身份验证数据进行后处理?
请注意,我有不同的登录用户的方式,因此我希望将其保存在AuthComponent逻辑中

这仍然适用于CakePHP3,但也建议您简要评论一下如何在新的CakePHP4身份验证插件中实现这一点


编辑:我需要什么的大致轮廓:数据需要根据当前上下文在用户数组中重新组织,即用户可以选择一个活动项目。

我仍然不确定需要以何种方式重新组织什么,但通常可以使用映射器/还原器和结果格式化程序修改查询的数据,后者通常是比较容易的方法

下面是一个快速示例,如果设置了名为active_project_id的字段,将向结果中添加名为additional_data的附加字段:

这种查找器查询也可以与新的身份验证插件一起使用

另见


您究竟需要以何种方式修改数据?将其添加到问题中。基本上,我需要构造用户数组,以便以后可以轻松获取与用户所选项目相关的信息。我希望将其保存在AuthComponent逻辑->进行您自己的AuthComponentGood调用中。我会看看这是否合适,然后回来。
$query->formatResults(function (\Cake\Collection\CollectionInterface $results) {
    return $results->map(function ($row) {
        if (isset($row['active_project_id'])) {
            $row['additional_data'] = 'lorem ipsum';
        }

        return $row;
    });
});