alt3/tokens

用于生成(安全)令牌对象的框架无关库。

该软件包的官方仓库似乎已消失,因此软件包已被冻结。

1.0.1 2017-02-06 14:32 UTC

This package is not auto-updated.

Last update: 2019-07-14 07:35:17 UTC


README

Build Status StyleCI Status HHVM Coverage Status Total Downloads License

用于生成(安全)令牌对象的框架无关PHP库。

它做什么?

每个应用程序在某个时候都必须处理令牌及其两个不同的领域

  1. 生成(安全)令牌
  2. 处理其周围的业务逻辑

此库通过引入标准化的 Token 对象为第一个领域提供了一种即插即用的解决方案,这些对象可以直接用于您的应用程序,从而节省了大量工作,并让您专注于最重要的事情;业务逻辑。

由于该库遵循适配器模式,因此您可以轻松创建自己的特定于令牌的生成器,如果包含的生成器不符合您的需求。

要求

  • PHP >=5.6 / HHVM

安装

  1. 使用 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软件包,以确保生成的令牌真正安全。

要使用

  1. 包含 RandomBytes 便捷类
  2. 实例化一个对象(自动生成令牌)
  3. 可选地使用支持的方法之一更改令牌对象
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之前,请确保