如何在 cakedc 插件 cakephp3 中为不同的用户组设置不同的身份验证重定向 url
how to set different auth redirect url for different user group in cakedc plugin cakephp3
我正在使用 cakephp3 和 cakedc 插件。我有两个用户组,一个是普通用户,另一个是超级用户
我基本上要寻找的是为不同的用户设置不同的 auth url,因为两个用户组都有不同的 dashbaord。
我试图挂钩 UsersAuthComponent::EVENT_AFTER_LOGIN
。这是我在 eventListener
中的代码
$helper = new AppView();
$adminDashBoard = $helper->Url->build([
'prefix' => 'admin',
'controller' =>'users',
'action' => 'dashboard',
'plugin' => null
]);
$customerDashBoard = $helper->Url->build([
'prefix' => 'customer',
'controller' =>'customers',
'action' => 'dashboard',
'plugin' => null
]);
$result = array();
if($entity['is_superuser'] == 1)
$result[] = $adminDashBoard;
else
$result[] = $customerDashBoard;
return $result;
我必须创建 AppView 的对象,因为 Url 构建器在 EventLister
中不可用。上面的代码工作正常,但是我在结果对象中附加的 url 被附加到当前的 URL 中,它变得像
domain.com/<user's dashboard url in urlencoded format>
但我希望它重定向到我在 eventListner
中设置的用户仪表板 url
任何帮助将不胜感激
我可以考虑 2 个选项:
- 覆盖 EVENT_AFTER_LOGIN(更复杂)
创建仪表板操作,以及每个角色的 2 个不同视图 1。然后在仪表板操作中,您可以执行类似
的操作
if ($role === ROLE_ADMIN) {
$this->render('dashboard_admin');
} else {
$this->render('dashboard_user');
}
我认为选项 2 很简单,可以使用它,您可以将视图中的通用标记提取到一个元素中,然后在两个元素中重复使用。
我正在使用 cakephp3 和 cakedc 插件。我有两个用户组,一个是普通用户,另一个是超级用户
我基本上要寻找的是为不同的用户设置不同的 auth url,因为两个用户组都有不同的 dashbaord。
我试图挂钩 UsersAuthComponent::EVENT_AFTER_LOGIN
。这是我在 eventListener
$helper = new AppView();
$adminDashBoard = $helper->Url->build([
'prefix' => 'admin',
'controller' =>'users',
'action' => 'dashboard',
'plugin' => null
]);
$customerDashBoard = $helper->Url->build([
'prefix' => 'customer',
'controller' =>'customers',
'action' => 'dashboard',
'plugin' => null
]);
$result = array();
if($entity['is_superuser'] == 1)
$result[] = $adminDashBoard;
else
$result[] = $customerDashBoard;
return $result;
我必须创建 AppView 的对象,因为 Url 构建器在 EventLister
中不可用。上面的代码工作正常,但是我在结果对象中附加的 url 被附加到当前的 URL 中,它变得像
domain.com/<user's dashboard url in urlencoded format>
但我希望它重定向到我在 eventListner
中设置的用户仪表板 url
任何帮助将不胜感激
我可以考虑 2 个选项:
- 覆盖 EVENT_AFTER_LOGIN(更复杂)
创建仪表板操作,以及每个角色的 2 个不同视图 1。然后在仪表板操作中,您可以执行类似
的操作if ($role === ROLE_ADMIN) { $this->render('dashboard_admin'); } else { $this->render('dashboard_user'); }
我认为选项 2 很简单,可以使用它,您可以将视图中的通用标记提取到一个元素中,然后在两个元素中重复使用。