Laravel Hash id объединяет [Base 62], [Base64], [Хэшиды], [Optimus] и другие высокопроизводительные алгоритмы кодирования и обеспечивает единый, элегантный, простой и удобный в использовании интерфейс вызова для преобразования (en-код ) конфиденциальных данных в сокращаемые, прерывистые, безопасные для URL идентификаторы (идентификаторы).
Пример сценария приложения
- Мы не хотим раскрывать обычные индексы данных, такие как идентификатор пользователя, идентификатор медиа-ресурса, идентификатор товара, номер заказа, регистрационный код, льготный код и т.д., Чтобы предотвратить вторжение искателей.
- Реконструируйте существующий механизм кодирования (генерации идентификаторов): используйте первичный ключ индекса базы данных, но путайте его с внешним миром.
- Зашифрованные строки дополнительно запутываются, и генерируются строки, безопасные для URL.
- Простые и унифицированные методы вызова используют различные алгоритмы кодирования, различные параметры кодирования одного и того же алгоритма или пользовательские алгоритмы.
Проект Дома
Домашняя страница проекта и Подробные документы: https://github.com/ElfSundae/…
Звездная обратная связь для новой упаковки
устанавливать
$ composer require elfsundae/laravel-hashid
Для Lumen или Laravel менее 5,5 вам необходимо зарегистрировать поставщика услуг вручную:
ElfSundae\Laravel\Hashid\HashidServiceProvider::class
Публикация файлов конфигурации:
# For Laravel application: $ php artisan vendor:publish --tag=hashid # For Lumen application: $ cp vendor/elfsundae/laravel-hashid/config/hashid.php config/hashid.php
Для настройки
Файлы конфигурации Has hid очень похожи на конфигурацию многих служб управления платформы Laravel, таких как базы данных, кэши, очереди и т.д. Поэтому не требуется дополнительного времени, чтобы научиться его настраивать.
Давайте возьмем пример:
'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',
],
],Воспользуйся
- Используйте
идентификатор хэша()Глобальные функции для получения экземпляров подключения или драйверов. - Используйте
hash id_encode()Глобальные функции закодированы. - Используйте
hash id_decode()Глобальные функции декодируются.
Пример:
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Встроенный привод
- [Base62]:
base62,base62_интегер - [Base64]:
base64,base64_интегер - [Хэшиды]:
хэшиды,hashids_hex,hashids_integer,hashids_string - [Шестнадцатеричный]:
шестнадцатеричный,hex_integer - [Оптимус]:
Оптимус
Консольные команды
идентификатор хэша:алфавитГенерация случайных строк0-9a-zA-Zхешид:optimusГенерировать параметры для кодирования [Optimus]
Пользовательский драйвер
Чтобы использовать свой собственный алгоритм кодирования и декодирования, вам нужно только создать реализацию класса ElfSundae\Laravel\Hashid\Интерфейс драйвера Интерфейс в порядке. Для этого интерфейса существует только два метода: кодирование и декодирование . Метод инициализации необязательно получает имя с именем $config Параметры конфигурации также поддерживают внедрение зависимостей с запросом типа.
Например:
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);
}
}Чтобы использовать этот пользовательский драйвер, укажите его в файле конфигурации:
'connections' => [
'custom' => [
'driver' => App\Hashid\CustomDriver::class,
'serialize' => false,
],
// ...
]Примеры вызовов:
hashid_encode(123456, 'custom');
Если вы хотите использовать короткое имя для пользовательского драйвера, просто зарегистрируйте привязку контейнера:
$this->app->bind('hashid.driver.custom', CustomDriver::class);Для получения дополнительной информации, пожалуйста, обратитесь к домашней странице проекта: https://github.com/ElfSundae/…