我有不同的用户群,例如管理员,作者,发布者和他们有单独的控制器我想在
的基础上登录后设置默认路径$这 - > Auth->用户( 'GROUP_ID')
在beforefilter()方法的appcontroller中像这样
if ($this->Auth->User('group_id') == '1')
{
Router::connect('/', array('controller' => 'admin', 'action' => 'index'));
}
elseif($this->Auth->User('group_id') == '2')
{
Router::connect('/', array('controller' => 'author', 'action' => 'index'));
}
else {
Router::connect('/', array('controller' => 'publisher', 'action' => 'index'));
}
我在
中试过了在Config中使用$ _SESSION变量routes.php文件
因为在该文件中无法使用 $此。 主要目的是当用户登录时,它将带到他们的控制器,所以我可以有干净的URL 我不想要同一个控制器我必须使用检查组,而不是ACL库的功能将是浪费。 任何帮助将不胜感激以实现这一目标。提前致谢
答案 0 :(得分:0)
//不要错过这个小东西的app_controller。请记住始终保持app控制器干净整洁。
function login(){
//here you can say after login what's happen next
if ($this->Auth->login()){
$this->redirectUser();
}
}
//redirect user groups
function redirectUser(){
$role = $this->Auth->User('group_id');
switch ($role) {
case 1:
return $this->redirect(array('controllers'=>'admin_controller', 'action'=>'action_name'));
break;
case 2:
return $this->redirect(array('controllers'=>'author_controller', 'action'=>'action_name'));
default:
return $this->redirect(array('controllers'=>'user_controller', 'action'=>'action_name'));
break;
}
}
如果您想使用自定义网址您还需要将其命名为routes.php
Route::connect('/admin', array('controller' => 'admin_controller', 'action' => 'index'));
其余链接
答案 1 :(得分:0)
根据你对Isaac答案的评论,你可以做这样的事情。 比如说,你可以在routes.php中找到:
Route::connect('/', array('controller' => 'some_controller', 'action' => 'index'));
然后在您的重定向控制器的index()
方法中:
public function index()
{
$group = $this->User->Group->find('first', array( //assuming User belongsTo Group
'conditions' => array(
'id' => $this->Auth->User('group_id')
),
'fields' => array('name')
)
)); //getting the name of the group the user belongs to
call_user_func(array($this, strtolower($group['Group']['name']).'_index'));
}
然后在你的控制器中你可以有类似的东西:
protected function admin_index()
{
//code for admins
}
protected function publisher_index()
{
//code for publishers
}
protected function author_index()
{
//code for authors
}
因此,您将所有代码放在同一个控制器上,但使用不同的方法分开。