cakephp 如何使用cakedc插件/用户和acl根据角色拥有不同的 Jmeter 板

oewdyzsn  于 2022-11-12  发布在  PHP
关注(0)|答案(1)|浏览(122)

我在我的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的初学者。

7d7tgy0s

7d7tgy0s1#

您的自定义控制器不在CakeDC/Users插件中,因此您必须相应地禁用plugin键,以便生成连接到您的控制器的正确URL(假设您的路由设置正确),如下所示:

[
    'plugin' => null,
    'controller' => 'MyUsers',
    'action' => 'index',
    '_full' => true,
    'prefix' => false
]

例如,这将匹配默认回退路由,生成类似/my-users的URL。
另请参阅:

*Cookbook〉Routing〉创建指向插件路由的链接

相关问题