yii2-hashids 扩展 [ 2.0 版本 ]
Github
安装
composer require jimchen/yii2-hashids
使用
return [
//...
'components' => [
//...
'hashids' => [
'class' => 'jimchen\hashids\HashidsComponent',
'salt' => 'default channel salt',
'length' => 'default channel length of the encode string',
// 'default' => 'main' // default channel
// 'connections' => null // other channel
],
],
];
关于 connections
配置
[
...
'connections' => [
'channel name' => [
'salt' => 'the salt',
'length' => 'the length of the encode string',
],
...
]
]
在你的代码中使用
use Yii;
$encode = Yii::$app->hashids->encode(12345);
var_dump(Yii::$app->hashids->decode($encode)); // [12345]
如何使用不同的盐值,通过频道区分
use Yii;
$otherChannelHashids = \Yii::createObject('hashids.manager')->connection('channel name');
$encode = $otherChannelHashids->encode(12345);
var_dump($otherChannelHashids->decode($encode)); // [12345]
需要注意:
因为底层Hash算法是使用 hashids/hashids, 那么根据其 API 每次
decode
均返回一个数组,如果有需要只返回一个数需要自行处理,为什么它会这么设计?这是因为encode
其实不单单可以encode
一个数,还可以是一个一维数字数组。只能对整形数字进行
encode
可能你很好奇使用场景在哪里,我们设想一下我们的网站
URL
设计成RESTFUL
风格时,是不是有时会暴露了用户ID的值,而且很多时候是直接采用数据库的自增实现,那么别人就很容易通过ID
猜测我们网站的用户量,此时hashids
作用就可以把这些ID进行隐藏起来。
Jim_Chen 广州
注册时间:2018-08-28
最后登录:2020-11-28
在线时长:3小时9分
最后登录:2020-11-28
在线时长:3小时9分
- 粉丝2
- 金钱30
- 威望20
- 积分260
共 0 条评论