dereuromark / cakephp-expose
CakePHP Expose 插件,通过 UUID 替代 AIID 来暴露实体
2.1.1
2024-03-11 17:22 UTC
Requires
- php: >=8.1
- cakephp/cakephp: ^5.0.0
Requires (Dev)
- ext-bcmath: *
- brick/math: ^0.11.0 || ^0.12.0
- fig-r/psr2r-sniffer: dev-next
- keiko/uuid-shortener: ^0.6.0
- phpunit/phpunit: ^10.2
- ramsey/uuid: ^3.9 || ^4.7
README
将 UUID 作为公共标识符暴露实体,而不是数值 AIID(自动递增 ID)主键。
此分支适用于 CakePHP 5.0+。有关详细信息,请参阅 版本映射。
主要目标
隐藏/混淆
- 真正的随机性,因此您无法确定记录的顺序或时间段内的数量。
安全性
- 批量赋值和序列化不允许设置此暴露字段 - 它默认为隐藏,就像主键一样。
坚固性
- 必须与更复杂的查询和用例一起工作,包括原子的
updateAll()
、deleteAll()
。 - 速度应与默认方法相似。
简单性
- 从 AIID 暴露到 UUID 查找的代码更改对所有公共端点都应尽可能少。
- 默认的短缩器使 UUID 也只有 22 个字符长的简洁字符串。
为什么组合 AIID 和 UUID?
有关详细信息,请参阅 动机。
演示
请参阅 沙盒 示例。
安装
您可以使用 Composer 将此插件安装到您的 CakePHP 应用程序中。
推荐的安装方法是
composer require dereuromark/cakephp-expose
然后,使用以下命令加载插件
bin/cake plugin load Expose
用法
请参阅 文档 了解详细信息。
将插件添加到现有记录的快速入门指南
比光速还快
- 添加行为并运行
bin/cake add_exposed_field PluginName.ModelName {MigrationName}
以生成添加字段的迁移。 - 执行迁移,然后使用
bin/cake populate_exposed_field PluginName.ModelName
填充现有记录 - 再次运行
bin/cake add_exposed_field PluginName.ModelName {MigrationName}
以获取新字段的非空字段迁移。 - 执行该迁移后,所有新记录都将自动存储其暴露字段。
您已完成,现在可以调整公共操作以仅按暴露字段查询,并完全隐藏主键。在 Expose
之上使用 Superimpose
行为意味着您实际上可能根本不需要修改任何代码。应该可以立即使用。
更多迁移技巧请参阅 迁移 部分。