Идентификатор шифрования в URL-адресах маршрутизаторов?

У меня есть контроллеры вроде

Records, Items .... где я использовал ID / records / 1, / records / 2 .... / items / 1, / items / 2 .... Подскажите лучший вариант, при котором можно получить шифр тип типа / записи / H $ Ur95% 92 (любой хэш) для всех контроллеров (Records, Items ...). Первым вариантом было создать таблицу с установленным идентификатором 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);............
});

Возможно, найду другие способы, когда у нас есть глобальные правила для всех контроллеров для шифрования и дешифрования идентификаторов только в области маршрутизатора (без каких-либо guid / uuid).

laravel,laravel-5,

0

Ответов: 1


1 принят

Также, как упоминалось в @haidang, вы можете использовать пакет Hashids от Vinkla ( https://github.com/vinkla/laravel-hashids ).

Этапы реализации

Монтаж

composer require vinkla/hashids

Если вы используете laravel 5.5+, тогда пакет будет автоматически обнаружен. Другие добавить поставщика услуг в файл config / app.php

Провайдер услуг (для Laravel 5.4 и меньше)

Добавьте поставщика услуг в config / app.php в массив поставщиков или если вы используете Laravel 5.5, это можно сделать с помощью автоматического обнаружения пакетов.

VinklaHashidsHashidsServiceProvider::class

Если вы хотите, вы можете использовать фасад. Добавьте ссылку в config / app.php в ваш массив псевдонимов.

'Hashids' => VinklaHashidsFacadesHashids::class

а потом

php artisan vendor:publish

Применение

// You can alias this in config/app.php.
use VinklaHashidsFacadesHashids;

Hashids::encode(4815162342);

Hashids::decode('doyouthinkthatsairyourebreathingnow');
// This example is simple and there are far more methods available.
Laravel, Laravel-5,
Похожие вопросы
Яндекс.Метрика