alt3 / tokens
用于生成(安全)令牌对象的框架无关库。
该软件包的官方仓库似乎已消失,因此软件包已被冻结。
Requires
- php: >=5.4.16
Requires (Dev)
- paragonie/random_compat: ^2.0
- phpunit/phpunit: 5.*
- sebastian/peek-and-poke: 1.0.x-dev
- squizlabs/php_codesniffer: ^2.5
Suggests
- paragonie/random_compat: PHP 5.x polyfill for random_bytes() and random_int() from PHP 7
This package is not auto-updated.
Last update: 2019-07-14 07:35:17 UTC
README
用于生成(安全)令牌对象的框架无关PHP库。
它做什么?
每个应用程序在某个时候都必须处理令牌及其两个不同的领域
- 生成(安全)令牌
- 处理其周围的业务逻辑
此库通过引入标准化的 Token
对象为第一个领域提供了一种即插即用的解决方案,这些对象可以直接用于您的应用程序,从而节省了大量工作,并让您专注于最重要的事情;业务逻辑。
由于该库遵循适配器模式,因此您可以轻松创建自己的特定于令牌的生成器,如果包含的生成器不符合您的需求。
要求
- PHP >=5.6 / HHVM
安装
-
使用 composer 安装插件
composer require alt3/tokens
用法
令牌对象
此库的主要责任是产生类似于以下所示的 Token
对象。由于具有标准化的结构,这些对象能够存储任何类型的令牌,从(OTP)密码到短信PIN码、优惠券代码和JSON Web Tokens(JWT)。
Alt3\Tokens\RandomBytesToken Object ( [adapter:protected] => Alt3\Tokens\Adapters\RandomBytesAdapter Object ( [length:protected] => 32 [function:protected] => Array ( [PHP 5.x native] => openssl_random_pseudo_bytes ) ) [token:protected] => 2affc51354bf23ac634bac894a1c38db [category:protected] => password-reset [payload:protected] => [lifetime:protected] => +3 days [created:protected] => DateTimeImmutable Object ( [date] => 2017-02-06 13:53:25.000000 [timezone_type] => 3 [timezone] => UTC ) [expires:protected] => DateTimeImmutable Object ( [date] => 2017-02-09 13:53:25.000000 [timezone_type] => 3 [timezone] => UTC ) )
使用 RandomBytesAdapter
使用 RandomBytesAdapter 生成适合例如一次性密码(OTP)、盐、密钥或初始化向量的加密安全的令牌。
强烈建议PHP 5.x用户安装paragonie/random_compat polyfill composer软件包,以确保生成的令牌真正安全。
要使用
- 包含
RandomBytes
便捷类 - 实例化一个对象(自动生成令牌)
- 可选地使用支持的方法之一更改令牌对象
use Alt3\Tokens\RandomBytesToken; $token = new RandomBytesToken(); print $token->getToken(); // b96b7826c75485b10518a36e2ca94860 $token = new RandomBytesToken(12); // 2109028d9bac $token = new RandomBytesToken(12, true); // ����Wz $token->setLifetime('+30 minutes'); print $token->getExpires(); // DateTimeImmutable $token->setCategory('password-reset'); $token->setPayload('{"email": "joe@example.com"}');
使用 RandomIntAdapter
使用 RandomIntAdapter 生成适合例如短信PIN码的加密随机整数。
强烈建议PHP 5.x用户安装paragonie/random_compat polyfill composer软件包,以确保生成的令牌真正安全。
use Alt3\Tokens\RandomIntToken; $token = new RandomIntToken(0, 10); print $token->getToken(); // 6 $token = new RandomIntToken(100000, 999999); // 625048
使用 ManualAdapter
ManualAdapter 允许您使用已有的令牌值生成一个 Token
对象。例如,用于优惠券代码或表示JWT令牌作为JSON API资源。
use Alt3\Tokens\ManualToken; $token = new ManualToken('SPRING2017'); print $token->getToken(); // SPRING2017
令牌方法
获取器方法
getToken()
:检索token
属性(字符串)getCategory()
:检索category
属性(字符串)getLifetime()
:检索lifetime
属性(DateTime::modify 支持的字符串)getPayload()
:检索payload
属性(混合类型)getCreated()
:检索created
属性(DateTimeImmutable)getExpires()
:获取expires
属性(DateTimeImmutable)toArray()
:返回包含所有令牌属性及其内容的数组
设置方法
setCategory()
:设置category
属性(字符串)setPayload()
:设置payload
属性(字符串、数组、对象等)setLifetime()
:设置lifetime
属性并更新expires
属性(支持 DateTime::modify 字符串)
创建自定义适配器
要开始生成您自己的自定义令牌,只需创建一个类似于以下示例的自定义适配器。
namespace App\Adapters; use Alt3\Tokens\Adapters\AdapterInterface; class CustomAdapter implements AdapterInterface { protected $argument; // Use the constructor to pass arguments to the token generator public function __construct($argument) { $this->argument = $argument; } public function generate() { return 'custom-token-with-' . $this->argument; } }
现在使用以下方法生成您自己的令牌
use App\Adapters\CustomAdapter; $token = new Token(new CustomAdapter('spice')); print $token->getToken(); // custom-token-with-spice
如果您认为其他人可能觉得它有用,请随意提交您的适配器作为PR。
贡献
在提交PR之前,请确保
- PHPUnit 测试通过(运行
composer run-script tests
) - PSR-2 代码检查 测试通过(运行
composer run-script cs
) - Coveralls 代码覆盖率 保持为100%