我正在尝试基于CakePHP博客教程(http://book.cakephp.org/3.0/en/tutorials-and-examples/blog-auth-example/auth.html)中的一个设置用户访问模型,但是将Roles放在一个单独的表中,并通过UserRoles表链接到用户。
我目前在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;
}
我不确定如何访问User对象并通过AppController文件中的用户ID获取用户角色。由于用户未直接链接到角色,我如何从IsAuthorized函数访问角色信息?当它由另一个表链接时,我如何进行查找以检索用户的角色? 谢谢!
答案 0 :(得分:4)
在控制器中设置AuthComponent时,请确保告诉它获取相关数据:
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'contain' => ['Roles']
]
]
]);
}