我正在使用TinyAuth CakePHP插件来管理我的网站上的权限。
他们也有一个使用CakePHP 3.7+使用数据库来管理ACL(访问控制列表)的插件,但是该插件不适用于CakePHP 4.0
我目前正在编写自定义适配器来管理数据库的授权,如建议的here。
我的主要问题是:我不知道应该在哪里编写新适配器?
当前,它们位于TinyAuth供应商文件夹中,我将它们导入到app_local.php中,如下所示:
'TinyAuth' => [
'multiRole' => true,
'aclAdapter' => TinyAuth\Auth\AclAdapter\DbAclAdapter::class,
],
这正在起作用。我没有设法使它们在我的项目文件夹中工作,因为我无法导入类(???)
这是一种安全/好的方法吗?对我来说,创建自己的插件或在其他地方编写php类并将其导入会更好吗?在CakePHP 4 app_local.php中导入文件安全吗?
我真的是PSR-4和CakePHP框架标准的新手,很抱歉,如果我的问题很愚蠢,但是我真的想正确地做事情...
提前谢谢您
除非您正在调试,否则您永远不要将内容放入vendor
文件夹中,否则,您将面临一些非常非常奇怪的极端情况,这些情况绝对无法以其他任何方式解决,但是这种情况极为罕见。当依赖关系正在更新时,您将失去所做的更改。
如果您想了解PSR-4,有无穷的资源,例如从官方网站开始:https://www.php-fig.org/psr/psr-4/
所有这些,基于官方应用程序模板的默认CakePHP 4.x应用程序的快速示例:
src/TinyAuth/Auth/AclAdapter/DbAclAdapter.php
App\TinyAuth\Auth\AclAdapter
DbAclAdapter
'aclAdapter' => \App\TinyAuth\Auth\AclAdapter\DbAclAdapter::class,
无论您是在引用类时使用完全限定名称(需要加反斜杠),还是使用use
语句导入名称,从技术角度来看实际上都没有关系,它在任何PHP中都可以使用文件。
无论您将自定义代码直接放在应用程序中,还是放在插件或常规库中,实际上都取决于您打算如何使用它。如果您想重用它或将其公开,则可能需要将其放在插件/库中。