dariusiii / token
Laravel 独特令牌生成器
v5.0.0
2023-02-16 17:40 UTC
Requires
- php: >=8.0
- illuminate/support: ^8.0|^9.0|^10.0
README
Laravel 独特令牌生成器
// Generate unique Token From Database. $new_token = $token->Unique($table_name, $column_name, $size);
安装
使用 Composer 在项目根目录中安装此包。
$ composer require dariusiii/token
将服务提供者添加到 config/app.php
中的 providers
数组中,或者在 Laravel 5.5 中,可以通过自动包发现来完成此操作。
DariusIII\Token\TokenServiceProvider::class
如果您想使用 facade,请将引用添加到 config/app.php
中的别名数组中。
'Token'=>\DariusIII\Token\Facades\Facade::class
文档
★ 新令牌特质 ★
在模型中设置
要使用新的令牌特质,需要在包含令牌列的模型中进行一些更改。
单列令牌
单个令牌特质允许您为表中的单个列生成令牌
- 要使用单列令牌,您需要在模型中添加
use DariusIIIToken;
。 - 在数据库中,我们使用默认列
dt_token
,要替换为您的列名,请添加protected $DT_Column='column_name';
到模型中。 - 令牌设置默认为这个值
['type' => DT_Unique, 'size' => 40, 'special_chr' => false]
,要替换为自定义设置,请添加protected $DT_settings=['type' => DT_Unique, 'size' => 60, 'special_chr' => false];
到模型中。 - 请注意,我们使用自定义常量来表示我们的令牌类型
Const DT_Unique = 'Unique'; Const DT_UniqueNum = 'UniqueNumber'; Const DT_UniqueStr = 'UniqueString'; Const DT_Random = 'Random'; Const DT_RandomNum = 'RandomNumber'; Const DT_RandomStr = 'RandomString';
- 在准备模型以在您的代码中使用我们的特质令牌之后,您可以像这样设置令牌和自定义列以及设置
$user=User::first(); $user->setToken(); $user->save();
- 您可以在
setToken();
函数中使用自定义设置,如下所示
$user=User::first(); $user->setToken(DT_UniqueStr,100,false); $user->save();
- 您可以在该函数中设置自定义列
$user=User::first(); $user->setToken(DT_UniqueStr,100,false,'column_name'); $user->save();
- 要获取带有令牌的模型查询,您可以使用
WithToken()
。$user=User::WithToken()->get();
- 要获取不带令牌的模型查询,您可以在
WithToken()
中使用标志false
。$user=User::WithToken(false)->get();
多列令牌
多令牌允许您为同一表中的多列生成令牌
- 要使用多列令牌,您需要在模型中添加
use DariusIIIMultiToken;
。 - 默认情况下,列设置未设置,因此您需要在模型中创建自定义设置
protected $DMT_columns=[ 'unique_id'=>['type'=>DT_Unique,'size'=>60,'special_chr'=>false], 'unique_uid'=>['type'=>DT_Unique,'size'=>30,'special_chr'=>false], ];
- 请注意,我们使用自定义常量来表示我们的令牌类型
Const DT_Unique = 'Unique'; Const DT_UniqueNum = 'UniqueNumber'; Const DT_UniqueStr = 'UniqueString'; Const DT_Random = 'Random'; Const DT_RandomNum = 'RandomNumber'; Const DT_RandomStr = 'RandomString';
- 在准备模型以在您的代码中使用我们的特质多令牌之后,您可以使用一个函数来设置令牌
$user=User::first(); $user->setTokens(); $user->save();
★ 旧方法 ★
生成唯一令牌
使用此包,您可以通过使用 unique($table_name,$column_name,$size)
函数生成不重复于数据库中的唯一令牌。其中 $table_name
是数据库中的表名,$column_name
是表中的列名,$size
是令牌大小。
生成唯一字符串令牌
使用与唯一令牌相同签名的函数 UniqueString($table_name,$column_name,$size)
生成唯一字符串令牌。
生成唯一整数令牌
使用与唯一令牌相同签名的函数 UniqueNumber($table_name,$column_name,$size)
生成唯一整数令牌。
生成随机令牌
使用函数 Random($size)
生成随机令牌,其中 $size
是令牌长度的尺寸。
生成随机整数令牌
使用函数 RandomNumber($size)
生成随机整数令牌,其中 $size
是令牌长度的尺寸。
生成随机字符串令牌
使用函数 RandomString($size)
生成随机字符串令牌,其中 $size
表示令牌长度。
特殊字符
使用 true
允许在您的令牌中使用特殊字符,例如在所有函数中使用 !@#$%^&*()
,就像 Random($size,true)
。
示例
这里您可以看到如何简单使用此包的一个示例。
唯一令牌
// Generate unique token not rebeated in database table with column name Token::Unique($table_name, $column_name, 10 ); //Result: fCWih6TDAf // Generate unique integer token not rebeated in database table with column name Token::UniqueNumber($table_name, $column_name, 10 ); //Result: 9647307239 // Generate unique string token not rebeated in database table with column name Token::UniqueString($table_name, $column_name, 10 ); //Result: SOUjkyAyxC //You can use special characters just add "true" to the function Token::Unique($table_name, $column_name, 10,true ); //Result: H@klU$u^3z
随机令牌(非唯一)
$size=10; // Generate random token Token::Random($size); // Generate random integer token Token::RandomNumber($size); // Generate random string token Token::RandomString($size); //You can use special characters just add "true" to the function Token::Random($size,true);