muffin / tokenize
安全令牌
Requires
- cakephp/cakephp: ^4.0
Requires (Dev)
- cakephp/cakephp-codesniffer: ^4.0
- phpunit/phpunit: ~8.5.0
This package is auto-updated.
Last update: 2024-09-21 20:10:38 UTC
README
CakePHP 3 的安全令牌
为什么需要?
是否想要在用户注册时强制激活他们的账户?
或者,在更新他们的凭证时发送确认链接?
好吧,好吧——也许在取消订阅之前或更好的是在发送资金之前。
现在您可以做到了。为您的模型附加监听器以发送电子邮件(或您选择的任何其他通知方法),然后就可以开始了!
安装
使用Composer
composer require muffin/tokenize
然后您需要加载插件。您可以使用以下shell命令
bin/cake plugin load Muffin/Tokenize --routes
或者通过手动将以下语句添加到bootstrap.php
Plugin::load('Muffin/Tokenize', ['routes' => true]);
这将确保为/verify/:token
风格的URL配置路由。
您还可以通过Configure
自定义令牌的长度、有效期限和表,如下所示
Configure::write('Muffin/Tokenize', [ 'lifetime' => '3 days', // Default value 'length' => 32, // Default value 'table' => 'tokenize_tokens', // Default value ]);
您还需要创建所需的表。已添加迁移文件以帮助您完成此操作
bin/cake migrations migrate --plugin Muffin/Tokenize
工作原理
在创建或更新记录时,如果数据包含任何令牌化字段,则会自动创建一个令牌,以及相关字段的数据。
在此发生时,将触发Model.afterTokenize
事件,并传递操作相关实体和为其创建的关联令牌。
初始(保存或更新)操作将恢复,但不包括令牌化字段。
只有在提交相关令牌后,才会更新令牌化字段。
用法
要更新时对password
列进行令牌化,请向您的UsersTable
添加以下内容
$this->addBehavior('Muffin/Tokenize.Tokenize', [ 'fields' => ['password'], ]);
如果您想同时在账户创建和凭证更新时创建令牌
$this->addBehavior('Muffin/Tokenize.Tokenize', [ 'fields' => ['password'], 'implementedEvents' => [ 'Model.beforeSave' => 'beforeSave', 'Model.afterSave' => 'afterSave', ], ]);
最后,如果您只想为其他自定义场景(例如无密码登录)动态创建令牌,您可以手动创建令牌
$this->Users->tokenize($user['id']);
上述操作将返回一个Muffin\Tokenize\Model\Entity\Token
实例。
从控制器操作验证令牌
$result = $this->Users->Tokens->verify($token);
补丁与功能
- 分支
- 修改,修复
- 测试——这很重要,所以不能不小心破坏它
- 提交——不要修改许可、todo、版本等。(如果您更改了任何,请将其提升到自己的提交中,这样我在拉取时可以忽略它们)
- 拉取请求——主题分支的加分项
为了确保您的PR被考虑上游,您必须遵循CakePHP编码标准。
错误与反馈
http://github.com/usemuffin/tokenize/issues
许可
版权(c)2015,Use Muffin,许可协议为MIT许可。