Laravel下使用Hashids加密id
有的时候我们的文章ID、用户ID等信息不想直接暴露在前端,则可以使用Hashids将int转化成唯一字符串,后端接受字符串信息后再解密成ID进行交互。
hashids的github网址: https://github.com/vinkla/laravel-hashids
1、使用composer安装Hashids
composer require vinkla/hashids
2、在config/app.php中的providers数组中添加
Vinkla\Hashids\HashidsServiceProvider::class
3、在config/app.php中的aliases数组中添加
'Hashids' => Vinkla\Hashids\Facades\Hashids::class
4、以config下生成hashids.php配置文件
php artisan vendor:publish
选择:Provider: Vinkla\Hashids\HashidsServiceProvider

5、修改hashids.php中的connections的盐值和加密输出长度
'connections' => [ 'main' => [ 'salt' => env('APP_KEY'),//可以随便输入你自己加密盐 'length' => '10',//加密后字符串长度 ], 'alternative' => [ 'salt' => env('APP_KEY'), 'length' => '10', ], ],
6、Hashids的加密解密使用方式
加密的使用方式
Hashids::encode(18);//返回经过加密后的字符串 7OWZR2Zla0
解密的使用方式 (注意:解密返回的是数组)
Hashids::decode('7OWZR2Zla0');//返回经过解密后的数组 [18]
同时加密多个参数
Hashids::encode(1,2,3);//5Z2Acws6pa
解密多个参数的加密字符串
Hashids::decode('5Z2Acws6pa')//返回经过解密后的数组[1,2,3]
切换不同的盐值和加密长度
我们可能需要对多个不同类型的id进行加密,盐值和返回长度也各有不同。所以config的hashids中的多个数组可以派上用场了。其中main数组是作为默认连接,可以自行添加其他的加密数组。
Hashids::encode(1);//使用默认main Hashids::connection('alternative')->encode(1);////使用默认alternative