我正在使用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等的地方
感谢
答案 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'。