【发布时间】:2019-05-31 19:14:12
【问题描述】:
我在我的 CakePhp 应用程序中使用 CakeDC 用户和 ACL 插件。我在我的应用中为我的用户设置了不同的角色,我希望在登录后根据角色拥有不同的仪表板。
我根据文档here 用我自己的表和控制器扩展了插件,所以我有 MyUsersController 和 MyUsersTable,它们覆盖了插件的初始文件,UsersController 和 UsersTable。一切正常。我在 events.php 文件中创建了一个事件,其中包含:
use CakeDC\Users\Controller\Component\UsersAuthComponent;
use Cake\Event\Event;
use Cake\Event\EventManager;
EventManager::instance()->on(
UsersAuthComponent::EVENT_AFTER_LOGIN,
['priority' => 99],
function (Event $event) {
if ($event->data['user']['role_id'] === 'bbcb3031-ebed-445e-8507-f9effb2de026') //the id of my client role{
return ['plugin' => 'CakeDC/Users', 'controller' => 'MyUsers', 'action' => 'index', '_full' => true, 'prefix' => false];
}
}
);
但似乎覆盖不起作用,因为我有一个错误:
错误:找不到 CakeDC/Users.MyUsersController。
在我的 URL 中,我有 /users/my-users 而不是 /my-users,我不知道为什么。我已经使用包含在插件和用户控制器中的模板文件进行测试,如下所示:
function (Event $event) {
if ($event->data['user']['role_id'] === 'bbcb3031-ebed-445e-8507-
f9effb2de026') //the id of role{
return ['plugin' => 'CakeDC/Users', 'controller' => 'Users', 'action' => 'profile';
}
而且它有效。我作为客户端登录后的 URL 重定向是 /profile。 有人可以帮我理解吗?请告诉我是否不够清楚,以及是否缺少对理解我的问题可能很重要的部分代码。
我指定我是 Cake 的初学者。
【问题讨论】:
标签: cakephp cakephp-3.x cakedc