Laravel Hashids
距離我說要分享套件開始到現在也二年多了,靠這個騙了不少文章數,但是到目前也才分享完 JS 的部分,後面還有 PHP、Laravel 套件...我快沒耐心寫了😅,而且寫的過程中套件持續更新,真是拖越久越要重新做功課,幸好現在有 ChatGPT,寫部落格超好用👍。
Laravel Hashids 是基於 Hashids 衍生出來的 Laravel 套件,Hashids 是一個小型 library,可以根據數字產生簡短的唯一 ID。
在開發時應該會看過這樣的 URL:
透過 Hashids 套件,可以把流水號編碼成看不懂的字串,讓人無法根據流水號猜測網址。
Laravel Hashids 是基於 Hashids 衍生出來的 Laravel 套件,Hashids 是一個小型 library,可以根據數字產生簡短的唯一 ID。
在開發時應該會看過這樣的 URL:
https://example.com/user/1 https://example.com/user/2 https://example.com/user/3流水號雖然非常直觀,但存在安全疑慮,只要把
/user/1 改成 /user/2,後端判斷又不夠嚴謹時,就可能存取到別人的資料。透過 Hashids 套件,可以把流水號編碼成看不懂的字串,讓人無法根據流水號猜測網址。
一、安裝
使用 Composer 安裝。composer require vinkla/hashids
二、設定
下指令 publish hashids 設定檔。php artisan vendor:publish會在 config 資料夾中建立 hashids.php 檔案。檔案中可以自訂新的 connections,才不會每次產出都是一樣的字串。
'default' => 'main',
'connections' => [
'main' => [
'salt' => '',
'length' => 0,
// 'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
],
'my-project' => [
'salt' => 'your-salt-string',
'length' => 'your-length-integer',
// 'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
],
],
三、使用
1. 基礎用法
使用上也非常簡單,基本上就是 encode、decode。use Vinkla\Hashids\Facades\Hashids; Hashids::encode($id); Hashids::decode($hashId);也可以搭配自訂的 connection。
use Vinkla\Hashids\Facades\Hashids;
Hashids::connection('my-project')->encode($id);
Hashids::connection('my-project')->decode($hashId);
2. 整合 Model
use Vinkla\Hashids\Facades\Hashids;
class User extends Model
{
protected $appends = [
'hashid'
];
public function getHashidAttribute()
{
return Hashids::encode($this->id);
}
}
參考文件
留言
張貼留言