在 CakePHP 3.0 中通过 table 链接模型时如何检索信息?
How to retrieve information when linking models through a table in CakePHP 3.0?
我正在尝试根据 CakePHP 博客教程 (http://book.cakephp.org/3.0/en/tutorials-and-examples/blog-auth-example/auth.html) 中的模型设置用户访问模型,但角色在单独的 table 中,并通过以下方式链接到用户用户角色 table.
我目前在 Model/Table/UsersTable.php 中有以下内容:
$this->belongsToMany('Roles', [
'through' => 'UserRoles'
]);
以及 Model/Table/RolesTable.php 中的以下内容:
$this->belongsToMany('Users', [
'through' => 'UserRoles'
]);
以及 Model/Table/UserRolesTable.php 中的以下内容:
$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 函数访问角色信息?当用户角色被另一个 table 链接时,我将如何进行查找以检索用户角色?
谢谢!
在您的控制器中设置 AuthComponent 时,确保您告诉它获取相关数据:
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'contain' => ['Roles']
]
]
]);
}
我正在尝试根据 CakePHP 博客教程 (http://book.cakephp.org/3.0/en/tutorials-and-examples/blog-auth-example/auth.html) 中的模型设置用户访问模型,但角色在单独的 table 中,并通过以下方式链接到用户用户角色 table.
我目前在 Model/Table/UsersTable.php 中有以下内容:
$this->belongsToMany('Roles', [
'through' => 'UserRoles'
]);
以及 Model/Table/RolesTable.php 中的以下内容:
$this->belongsToMany('Users', [
'through' => 'UserRoles'
]);
以及 Model/Table/UserRolesTable.php 中的以下内容:
$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 函数访问角色信息?当用户角色被另一个 table 链接时,我将如何进行查找以检索用户角色? 谢谢!
在您的控制器中设置 AuthComponent 时,确保您告诉它获取相关数据:
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'contain' => ['Roles']
]
]
]);
}