我在我的CakePhp应用程序中使用CakeDC用户和ACL插件。我在我的应用程序中为我的用户设置了不同的角色,我希望在登录后根据角色设置不同的 Jmeter 板。
我在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';
}
我的网址重定向后,作为客户端登录是/profile.有人能帮助我理解吗?请告诉我,如果它不够清楚,如果它的丢失部分代码,可能是重要的,以了解我的问题.
我指定我是Cake的初学者。
1条答案
按热度按时间7d7tgy0s1#
您的自定义控制器不在
CakeDC/Users
插件中,因此您必须相应地禁用plugin
键,以便生成连接到您的控制器的正确URL(假设您的路由设置正确),如下所示:例如,这将匹配默认回退路由,生成类似
/my-users
的URL。另请参阅:
*Cookbook〉Routing〉创建指向插件路由的链接