在 cakephp 3.6 中,如何更改 auth 组件的用户查找器查询?

In cakephp 3.6, How to change user finder query for auth component?

对于 cakephp 3.6,cakephp.org 说明如何在以下 link 处为 auth 组件自定义用户查找器查询: link 但我不知道如何实施? 我在属于部门 table 的用户 table 中有 'department_id' 列。我想更改以下查询:

public function findAuth(){
    $query
    ->select(['id', 'username', 'password'])->contain(['Departments'])
        ->where(['Users.active' => 1]);
    return $query;
}

上面的代码行得通吗? 请告诉我必须在哪个文件中编写函数? 以及完成它的其他必要步骤是什么,以便我在 $this->Auth->User 中获得所有用户相关信息?

首先,您需要加载 Auth 组件并在您想要使用自定义查找器的任何控制器中传递自定义配置,如下所示:

public function initialize()
{
    parent::initialize();
    $this->loadComponent('Auth', [
        'authenticate' => [
            'Form' => [
                'finder' => 'auth'
            ]
        ],
    ]);
}

然后,在您的 UsersTable 中您将拥有自定义查找器:

public function findAuth(\Cake\ORM\Query $query, array $options)
{
    $query
    ->select(['id', 'username', 'password'])->contain(['Departments'])
    ->where(['Users.active' => 1]);

    return $query;
}

这个答案也可能有帮助