muffin/tokenize

安全令牌

安装次数: 14,475

依赖项: 2

建议者: 1

安全: 0

星标: 12

关注者: 2

分支: 11

类型:cakephp-plugin

2.0.0-beta 2020-01-21 03:39 UTC

This package is auto-updated.

Last update: 2024-09-21 20:10:38 UTC


README

Build Status Coverage Status Total Downloads License

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许可