cakephp - 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 框架标准真的很陌生,如果我的问题很愚蠢,很抱歉,但我真的很想把事情做对......
提前谢谢你
解决方案
你永远不应该把东西放在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 文件中以任何方式工作。
是否将自定义代码直接放在应用程序中,或者放在插件或常规库中,实际上取决于您打算如何使用它。如果您想重用它或将其公开,那么您可能希望将其放入插件/库中。
推荐阅读
- angular - Angular - 如何将可观察的访问令牌添加到传出的 HTTP 请求?
- javascript - 如何在反应谷歌图表中使用折叠方法
- visual-studio-code - Visual Studio 代码垂直指南
- facebook - Facebook Pixel:在目录中找不到提供的产品参数 ID
- powershell - 在 Where 语句中使用数字范围
- java - 在 Java Eclipse 中使用 Selenium WebDriver 启动 Chrome 时出错 - 线程“main”中出现异常
- c# - 无法为数据模板工具提示设置父数据上下文
- python - Bokeh ResetTool 预期行为
- sql-server - 为什么在使用连接和内部查询时 order by 子句不能按预期工作
- visual-studio - 如何让 msbuild 了解 .csproj 文件取决于另一个 .csproj 构建的 exe 的可用性