摘要:整合了等高性能編碼算法,并提供了統(tǒng)一的優(yōu)雅的簡單易用的調(diào)用接口,將敏感數(shù)據(jù)混淆編碼成可還原的非連續(xù)的安全的標(biāo)識符。重構(gòu)現(xiàn)有的發(fā)碼生成機制使用數(shù)據(jù)庫自帶的索引主鍵,但是對外進行混淆。對加密串進一步混淆,并生成安全的字符串。
Laravel Hashid 整合了 [Base62], [Base64], [Hashids], [Optimus] 等高性能編碼算法,并提供了統(tǒng)一的、優(yōu)雅的、簡單易用的調(diào)用接口,將「敏感數(shù)據(jù)」混淆(編碼)成可還原的、非連續(xù)的、URL 安全的標(biāo)識符 (ID) 。
應(yīng)用場景示例不希望對外暴露有規(guī)則的數(shù)據(jù)索引,比如用戶 ID 、媒體資源 ID 、商品 ID 、訂單號、注冊碼、優(yōu)惠碼等,防止爬蟲侵擾。
重構(gòu)現(xiàn)有的發(fā)碼(ID 生成)機制:使用數(shù)據(jù)庫自帶的索引主鍵,但是對外進行混淆。
對加密串進一步混淆,并生成 URL 安全的字符串。
簡單、統(tǒng)一的調(diào)用方法使用不同的編碼算法、同一算法的不同編碼參數(shù)、或自定義算法。
項目主頁項目主頁及詳細文檔: https://github.com/ElfSundae/...
新包求 Star 求反饋
安裝$ composer require elfsundae/laravel-hashid
對于 Lumen 或 Laravel 低于 5.5 版本,需要手動注冊 service provider:
ElfSundaeLaravelHashidHashidServiceProvider::class
發(fā)布配置文件:
# For Laravel application: $ php artisan vendor:publish --tag=hashid # For Lumen application: $ cp vendor/elfsundae/laravel-hashid/config/hashid.php config/hashid.php配置
Hashid 的配置文件和 Laravel 框架的眾多管理 (manager) 服務(wù)的配置極其類似,例如數(shù)據(jù)庫、緩存、隊列等。所以無需花費額外時間來學(xué)習(xí)如何配置它。
我們來看個例子:
"default" => "id", "connections" => [ "basic" => [ "driver" => "base64", ], "hashids" => [ "driver" => "hashids", "salt" => "sweet girl", ], "id" => [ "driver" => "hashids_integer", "salt" => "My Application", "min_length" => 6, "alphabet" => "1234567890abcdef", ], "base62" => [ "driver" => "base62", "characters" => "f9FkqDbzmn0QRru7PBVeGl5pU28LgIvYwSydK41sCO3htaicjZoWAJNxH6EMTX", ], ],使用
使用 hashid() 全局函數(shù)獲取 connection 或 driver 實例。
使用 hashid_encode() 全局函數(shù)進行編碼。
使用 hashid_decode() 全局函數(shù)進行解碼。
示例:
hashid_encode(123456); // "xkNDJ" hashid_decode("xkNDJ"); // 123456 hashid_encode(123456, "optimus"); // 1101845824 hashid_decode(1101845824, "optimus"); // 123456 hashid_encode(123456, "base62"); // "W7E" hashid_encode("123456", "base62"); // "FMJUCzH4" hashid_decode("W7E", "base62_integer"); // 123456內(nèi)置驅(qū)動
[Base62] : base62 , base62_integer
[Base64] : base64 , base64_integer
[Hashids] : hashids , hashids_hex , hashids_integer , hashids_string
[Hex] : hex , hex_integer
[Optimus] : optimus
控制臺命令hashid:alphabet :生成隨機串 0-9a-zA-Z
hashid:optimus :生成 [Optimus] 編碼要用到的參數(shù)
自定義驅(qū)動要使用自己的編解碼算法,只需要創(chuàng)建一個類實現(xiàn) ElfSundaeLaravelHashidDriverInterface 接口即可,這個接口只有兩個方法: encode 和 decode 。初始化方法可選接收一個名為 $config 的配置參數(shù),同時也支持類型提示式依賴注入。
例如:
encrypter = $encrypter; $this->serialize = $config["serialize"] ?? false; } public function encode($data) { return $this->encrypter->encrypt($data, $this->serialize); } public function decode($data) { return $this->encrypter->decrypt($data, $this->serialize); } }
要使用這個自定義驅(qū)動,在配置文件中指定它即可:
"connections" => [ "custom" => [ "driver" => AppHashidCustomDriver::class, "serialize" => false, ], // ... ]
調(diào)用示例:
hashid_encode(123456, "custom");
如果想為自定義驅(qū)動使用一個短名字,注冊一個容器綁定即可:
$this->app->bind("hashid.driver.custom", CustomDriver::class);
更多使用方法請參考項目主頁:https://github.com/ElfSundae/...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26052.html
摘要:如這個很簡單,那么在模型間關(guān)系比如,等使用這種方式的情況下,如何設(shè)置分表呢找了半天沒找到好的辦法,以為例,只好復(fù)制類中的方法,改成,并傳入表名,并且在函數(shù)里對象實例化后調(diào)用,果然可以。 在實際開發(fā)中經(jīng)常用到分庫分表,比如用戶表分成 100 張,那么這個時候查詢數(shù)據(jù)需要設(shè)置分表,比如 Laravel 的 Model 類中提供了 setTable 方法: /** * Set the ta...
摘要:查找保存下載用搭建自己的緩存?zhèn)}庫權(quán)限管理的好選擇基于封裝的后臺管理系統(tǒng),支持手機和端訪問支付寶風(fēng)格的驗證器后臺系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動記錄用戶行為擴展一個項目管理系統(tǒng)根據(jù)生成對應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...
摘要:實驗一個抽象類,有個方法,通過延遲靜態(tài)綁定實例化并返回。這里如果把注釋打開,打印的就是重寫的值如果把抽象類改成普通類,改成的方式實例化,結(jié)果就不同了,打印的屬性都是各自類的屬性。 (原文地址,內(nèi)容以原文為準,可能修改或者補充:https://blog.tanteng.me/2017/...) 關(guān)于 PHP 的 new static 延遲靜態(tài)綁定,或者叫后期靜態(tài)綁定,在 Laravel...
摘要:先上鏈接如果覺得幫助了你,節(jié)省了你的時間記得喲用戶直接用這個序言之前用過很多擴展包但是暫時沒有一個用的順心的,一些擴展包配置太復(fù)雜,還有的擴展包不能集成文件驅(qū)動,對于喜歡優(yōu)雅編碼的同學(xué)可能不能忍受最近閑下來看了一些優(yōu)秀的開源項目,從中 showImg(https://iocaffcdn.phphub.org/uploads/images/201812/30/4430/zcyZkSQgZ...
摘要:擴展包提供了最簡單優(yōu)雅的方式來生成全球公認頭像地址。配置示例只有一個全局幫助函數(shù)使用示例為生成頭像地址,使用連接配置為的哈希值生成頭像地址,使用連接配置使用連接配置使用連接配置,并覆蓋參數(shù)為使用連接配置,并覆蓋參數(shù)為或者 Laravel Gravatar 擴展包提供了最簡單優(yōu)雅的方式來生成 Gravatar 全球公認頭像地址。靈活方便的 API ,支持多連接配置,支持鏡像地址。 項目主...
閱讀 3564·2023-04-25 16:35
閱讀 700·2021-10-11 11:09
閱讀 6167·2021-09-22 15:11
閱讀 3357·2019-08-30 14:03
閱讀 2598·2019-08-29 16:54
閱讀 3350·2019-08-29 16:34
閱讀 3053·2019-08-29 12:18
閱讀 2126·2019-08-28 18:31