如何在 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 很简单,可以使用它,您可以将视图中的通用标记提取到一个元素中,然后在两个元素中重复使用。