首页 > 解决方案 > CakePHP TinyAuth 适配器实现

问题描述

我正在使用 TinyAuth CakePHP 插件来管理我网站上的权限。

他们还有一个插件来使用带有 CakePHP 3.7+ 的数据库来管理 ACL(访问控制列表),但该插件不适用于 CakePHP 4.0

我目前正在编写自定义适配器来管理数据库的授权,就像这里建议的那样。

我的主要问题是:我不知道我应该在哪里写我的新适配器?

目前,它们位于 TinyAuth 供应商文件夹中,我将它们导入app_local.php中,如下所示:

 'TinyAuth' => [
        'multiRole' => true,
        'aclAdapter' => TinyAuth\Auth\AclAdapter\DbAclAdapter::class,
    ],

这是有效的。我没有设法让它们在我的项目文件夹中工作,因为我无法导入类(???)

这是一种安全/好方法吗?创建自己的插件,还是在别处编写我的 php 类并导入它对我来说更好吗?在 CakePHP 4 app_local.php中导入文件是否安全?

我对 PSR-4 和 CakePHP 框架标准真的很陌生,如果我的问题很愚蠢,很抱歉,但我真的很想把事情做对......

提前谢谢你

标签: cakephpconventionspsr-4cakephp-4.x

解决方案


你永远不应该把东西放在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 文件中以任何方式工作。

是否将自定义代码直接放在应用程序中,或者放在插件或常规库中,实际上取决于您打算如何使用它。如果您想重用它或将其公开,那么您可能希望将其放入插件/库中。


推荐阅读