我有像
这样的控制器记录,项目....我使用ID的地方 / records / 1,/ records / 2 .... / items / 1,/ items / 2 .... 提示可以接收所有控制器(记录,项目...)的密码类型/记录/ H $ Ur95%92(任何哈希)的最佳变体。第一个选项是创建一个设置为id< - >的表格。哈希并检查路由器中传输的哈希值。但我认为这个选项不太正确,因为在添加新记录(ID)时,您需要记录(检查)新哈希。我认为有一个简单的选择,通过路由器很好地完成所有这些,没有任何额外的表。 喜欢这个
$id= Crypt::encrypt(['id' => 1 ]);
<a href="{{url('/records/',$id)}}" target="_blank">get record</a>
然后检查路由器,如
Route::get('/{id}', function($id){
..... Crypt::decrypt($id);............
});
也许找到任何其他方式,我们有所有控制器的全局规则,只在路由器区域加密和解密ID(没有任何guid / uuid)。
答案 0 :(得分:1)
就像@haidang提到的那样,你可以使用Vinkla的Hashids(https://github.com/vinkla/laravel-hashids)包。
composer require vinkla/hashids
如果您正在运行laravel 5.5+,那么将自动发现该包。否则,请将服务提供商添加到 config / app.php 文件
将服务提供者添加到providers数组中的config / app.php,或者如果您使用的是Laravel 5.5,则可以通过自动包发现来完成。
Vinkla\Hashids\HashidsServiceProvider::class
如果你想要,你可以使用立面。将config / app.php中的引用添加到别名数组中。
'Hashids' => Vinkla\Hashids\Facades\Hashids::class
然后
php artisan vendor:publish
// You can alias this in config/app.php.
use Vinkla\Hashids\Facades\Hashids;
Hashids::encode(4815162342);
Hashids::decode('doyouthinkthatsairyourebreathingnow');
// This example is simple and there are far more methods available.