authentication - 如何使用 Authentication 插件实现 CakePHP ACL 插件
问题描述
我一直在做一个项目,我做的第一件事就是添加身份验证和授权插件。自从它被弃用以来,我根本没有使用过 AuthComponent。
现在我想在数据库上添加额外的逻辑并安装ACL Plugin。我还没有设法找到文档,互联网上的所有示例都使用旧的AuthComponent实现了插件。
我需要的是找到一种方法让 ACL 使用新的身份验证插件
这是我的 AppController.php:
public function initialize(): void
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
// Add this line to check authentication result and lock your site
$this->loadComponent('Authentication.Authentication');
$this->loadComponent('Authorization.Authorization');
$this->loadComponent('Acl', [
'className' => 'Acl.Acl'
]);
$this->loadComponent('Auth', [
'authorize' => [
'Acl.Actions' => [
'actionPath' => 'controllers/',
'userModel' => 'Users'
]
],
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email'],
'userModel' => 'Users'
],
],
'loginAction' => [
'plugin' => false,
'controller' => 'Users',
'action' => 'login'
],
'loginRedirect' => [
'plugin' => null,
'controller' => 'Users',
'action' => 'index'
],
'logoutRedirect' => [
'plugin' => null,
'controller' => 'Users',
'action' => 'login'
],
'unauthorizedRedirect' => [
'controller' => null,
'action' => 'login',
'prefix' => false
],
'authError' => 'You are not authorized to access that location.',
'flash' => [
'element' => 'error'
]
]);
/*
在stackoverflow上发现“这两个插件不能一起工作,cakephp/acl 严格要求与已弃用的身份验证组件一起使用。如果您想要用于 cakephp/授权的 ACL,那么您需要自己实现”。
我不知道该怎么做,所以如果有人知道如何做到这一点或可能是另一种解决方案,我仍在倾听。
解决方案
推荐阅读
- java - DynamoDB 嵌套映射到 Java 对象
- nuxt.js - Tailwind+ Nuxt:@apply 不适用于所有课程
- python - 是否可以将一个线程的结果通过管道传输到另一个线程?
- terraform - 错误:不允许对具有 VCS 连接的工作区应用
- python-3.x - 如何使用 BeautifulSoup 抓取标签之间的嵌套文本?
- ios - RAD Studio 10.4.1 尝试运行“无法创建进程:/Applications/PAServer-21.0.app/Contents/MacOS/dbkosx_27_0”时出现我的第一个 iOS 应用程序错误
- machine-learning - 就大 O 表示法而言,O(N*P) 是什么类别,P 表示特征大小,如在朴素贝叶斯或 kNN 中所见?
- reactjs - 使用特快专递和反应
- c# - ASP.NET Core Web API Docker Linux 拒绝连接
- c++ - 你应该如何使用带有 URDF 的控制器