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 等的地方

谢谢

4

1 回答 1

4

好的,例如,您将每个用户重定向到一个动作 say 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”,用户将被重定向到“managers_dashboard”。

于 2012-04-07T20:44:26.930 回答