jamisonbryant / cakephp-secureids-plugin
一个用于实体使用安全、非增量ID的CakePHP插件
Requires
- php: >=7.0
- cakephp/cakephp: ~3.0
- cakephp/migrations: @stable
Requires (Dev)
- phpunit/phpunit: ~4.1
README
一个用于模型使用安全、非增量ID的CakePHP插件。
简介
什么是安全ID?
安全ID是一种使用非增量、不可猜测的随机生成的唯一标识符来标识数据库中记录的方法。这解决了一系列问题,从可用性到安全性等。更多信息,请查看Tom Scott的精彩视频YouTube是否会耗尽视频ID?
什么是CakePHP?
CakePHP是一个使用MVC(模型/视图/控制器)架构的快速开发PHP Web应用程序框架。它首次于2005年8月发布,现在已升级到3.0版本,比以往任何时候都更加强大!CakePHP的一个优点是它支持通过插件扩展其功能,这个插件就是其中之一。
有关CakePHP的更多信息,请访问他们的网站CakePHP.org。
安装
先决条件
- PHP 7.x
- CakePHP 3.x
命令行安装
使用Composer是安装此插件的首选方法,因为它允许您轻松下载插件及其依赖项,并保持它们更新,并利用Composer的出色类自动加载器。
要使用Composer安装插件
- 打开一个终端,并使用
cd
转到您的CakePHP应用程序的根目录。 - 运行
composer require jamisonbryant/cakephp-secureids-plugin
以下载插件及其依赖项。 - 如果您想,可以打开
composer.json
进行编辑,并修改插件的版本控制方案。
手动安装
您还可以通过点击上面的“下载ZIP”按钮手动安装插件,并将其解压缩到您的CakePHP应用程序的plugins/
目录中,但这样做的话,您将不得不手动执行更新。
如果您熟悉git,您也可以使用git clone
直接将仓库下载到您的硬盘上。这允许您始终处于插件开发的尖端,但请注意,“尖端”之所以被称为“尖端”,是有原因的。
设置
要将插件添加到您的应用程序,请在应用程序的引导文件中激活插件
Plugin::load('SecureIds');
或使用Cake shell
./bin/cake plugin load SecureIds
注意:您必须将列bid
(用于Base64 ID)和uuid
(用于UUID)添加到每个想要具有安全ID的模型的表架构中。您可以通过运行包含的迁移(需要CakePHP Migrations插件)轻松完成此操作。
./bin/cake migrations migrate -p SecureIds
用法
因为插件的功能是作为行为实现的,所以您需要将行为(称为Identifiable
行为)应用到您想要使用它的每个模型上。为此,您需要为每个想要获取安全ID的模型创建一个表定义类
// File: src/Model/Table/ArticlesTable.php
namespace App\Model\Table;
use Cake\ORM\Table;
class ArticlesTable extends Table
{
public function initialize(array $config)
{
$this->addBehavior('SecureIds.Identifiable');
}
}
以上代码假定我们在使用一个Article
模型,显然你应该用你自己的模型名称替换它。注意:你可能(读:很可能)需要为每个模型创建一个表定义文件,因为 CakePHP 默认不会为你做这件事,而是更喜欢动态推断你的表定义。这对大多数用例来说很棒,但是当我们想要更多控制(比如添加一个行为)时,我们需要自己创建这些文件。
测试
您可以使用 CakePHP 内置的 PHPUnit 支持 来测试插件,但这里有两个前提条件
- 您已经全局安装了 PHPUnit,并且可以从命令行访问
phpunit
命令 - 您没有删除与 CakePHP 3.x 应用程序一起创建的
phpunit.xml.dist
要测试插件,首先将其测试套件添加到应用程序的 PHPUnit 配置文件中
<?xml version="1.0" encoding="UTF-8"?>
<phpunit ...>
...
<testsuites>
<testsuite name="App Test Suite">
<directory>tests/TestCase</directory>
</testsuite>
<!-- Add these lines -->
<testsuite name="Secure IDs Plugin Test Suite">
<directory>vendor/jamisonbryant/cakephp-secureids-plugin/tests/TestCase</directory>
</testsuite>
</testsuites>
...
</phpunit>
接下来,进入您的应用程序根目录并运行 phpunit
。
如果不起作用,运行 composer dump-autoload
并再次尝试。
贡献
错误报告
如果您发现插件中的错误,或者知道您希望添加的功能缺失,请随意在 问题页面 上创建一个问题。 在报告错误时,尽可能详细。包括错误发生时您正在做什么,可能导致错误的原因,以及如果可能,如何重现它。截图也很不错。
出于礼貌,请在创建新问题之前使用搜索工具验证是否已报告过该问题。您可以在开放的错误/功能请求上添加您的评论/+1,但重复的问题需要花费时间来修剪,并会挤出新的、重要的问题。
拉取请求
发现了一个你认为可以修复的错误?那就去做吧!克隆受影响的分支,修复错误,然后创建一个拉取请求,我会尽快审查和接受。但是,在提交拉取请求之前,请确保您的代码遵循 PSR-2 代码风格指南。不遵循风格指南的 PR 将会被拒绝!(当然,礼貌地拒绝)
法律
许可证
本软件受 MIT 许可证(MIT)许可。有关详细信息,请参阅 LICENSE.md
。
版权
版权所有 (c) 2019 Jamison Bryant。保留所有权利。