在CakePHP 3.0中,通过表链接模型时如何检索信息?

在CakePHP 3.0中,通过表链接模型时如何检索信息?,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我试图基于CakePHP博客教程()中的模型建立一个用户访问模型,但是角色在一个单独的表中,并通过UserRoles表链接到用户 我目前在Model/Table/UsersTable.php中有以下内容: $this->belongsToMany('Roles', [ 'through' => 'UserRoles' ]); $this->belongsToMany('Users', [ 'through' =>

我试图基于CakePHP博客教程()中的模型建立一个用户访问模型,但是角色在一个单独的表中,并通过UserRoles表链接到用户

我目前在Model/Table/UsersTable.php中有以下内容:

    $this->belongsToMany('Roles', [
        'through' => 'UserRoles'
    ]);
    $this->belongsToMany('Users', [
        'through' => 'UserRoles'
    ]);
    $this->belongsTo('Users', [
        'foreignKey' => 'user_id'
    ]);
    $this->belongsTo('Roles', [
        'foreignKey' => 'role_id'
    ]);
以及Model/Table/RolesTable.php中的以下内容:

    $this->belongsToMany('Roles', [
        'through' => 'UserRoles'
    ]);
    $this->belongsToMany('Users', [
        'through' => 'UserRoles'
    ]);
    $this->belongsTo('Users', [
        'foreignKey' => 'user_id'
    ]);
    $this->belongsTo('Roles', [
        'foreignKey' => 'role_id'
    ]);
以及Model/Table/UserRolesTable.php中的以下内容:

    $this->belongsToMany('Roles', [
        'through' => 'UserRoles'
    ]);
    $this->belongsToMany('Users', [
        'through' => 'UserRoles'
    ]);
    $this->belongsTo('Users', [
        'foreignKey' => 'user_id'
    ]);
    $this->belongsTo('Roles', [
        'foreignKey' => 'role_id'
    ]);
我创建了查看、创建和管理员角色。我试图弄清楚如何在AppController.php中检查用户的角色。以下是将角色合并到用户对象中时给出的简单示例:

public function isAuthorized($user)
{
    // Admin can access every action
    if (isset($user['role']) && $user['role'] === 'admin') {
        return true;
    }

    // Default deny
    return false;
}
我不确定如何从AppController文件访问用户对象并通过用户ID获取用户角色。由于用户未直接链接到角色,我如何从IsAuthorized函数访问角色信息?当用户的角色被另一个表链接时,如何进行查找以检索该角色?
谢谢大家!

在控制器中设置AuthComponent时,请确保告诉它获取相关数据:

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

在控制器中设置AuthComponent时,请确保告诉它获取相关数据:

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

谢谢如何从控制器函数或视图检查用户的角色?将该用户传递到beforeRender()中的视图,如$this->set('userData',$this->Auth->user());谢谢如何从控制器函数或视图检查用户的角色?将该用户传递到beforeRender()中的视图,如$this->set('userData',$this->Auth->user());