2015-04-02 35 views
0

我想根据CakePHP博客教程(http://book.cakephp.org/3.0/en/tutorials-and-examples/blog-auth-example/auth.html)中的一个设置用户访问模型,但角色位于单独的表中,并通过UserRoles表链接到用户。如何在通过CakePHP 3.0中的表链接模型时检索信息?

我现在有在型号/表/ UsersTable.php以下:

$this->belongsToMany('Roles', [ 
     'through' => 'UserRoles' 
    ]); 

,并在型号/表/ RolesTable.php以下:

$this->belongsToMany('Users', [ 
     'through' => 'UserRoles' 
    ]); 

,并在型号以下/ 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函数访问角色信息?如何在用另一个表链接时执行查找以检索用户的角色? 谢谢!

回答

4

当你的控制器建立AuthComponent,确保你告诉它来获取相关的数据:

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

谢谢!我将如何去检查控制器函数或视图中用户的角色是什么? – Sarah 2015-04-04 01:03:12

+1

将用户传递给beforeRender()中的视图,如$ this-> set('userData',$ this-> Auth-> user()); – 2015-04-04 12:00:10

相关问题