cakephp重定向用户组

时间:2012-04-07 20:29:15

标签: cakephp cakephp-1.3 cakephp-2.0

我正在使用acl,我想根据用户来自哪个用户重定向用户

在我的appcaontroller中我有这个

public function beforeFilter() {
                                //Configure AuthComponent
                                //$this->Auth->allow('display');
                                $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
                                $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
                                $this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'add');
    }

如果用户来自group_id 1,我应该怎么做,他/她应该被重定向到不同于group_id = 4等的地方

感谢

1 个答案:

答案 0 :(得分:4)

好的,例如,您将每个用户重定向到一个操作说dashboard。而不是重定向用户以添加posts控制器重定向到dashboard users控制器的操作。我假设你有另一个组表,你在用户表中保留它的外键。

    $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'dashboard');

上述操作会在登录dashboard控制器中的users操作后重定向用户。现在,将每个用户带到特定组,获取用户的组名并重定向到特定页面。

  function dashboard() {
      //get user's group (role)
    $group_name = $this->User->Group->field('name', array('id' => $this->Auth->User('group_id')));
    //group selection logic here
    $action = 'dashboard_' . $group_name;
    $this->redirect('controller' => 'users' => 'action' => $action);
  }

因此,上述代码将使每个用户采取特定的操作,例如如果组名是'经理'用户将被重定向到' managers_dashboard'。