Um pacote Laravel que substitui a ligação do modelo de rota padrão por uma versão mais segura.
Você pode instalar este pacote com o compositor:
composer require markwalet/laravel-hashed-route
O Laravel 5.5 usa descoberta automática de pacotes, então você não precisa registrar o provedor de serviços. Se você deseja registrar o provedor de serviços manualmente, adicione a seguinte linha ao seu arquivo config/app.php
:
MarkWalet LaravelHashedRoute HashedRouteServiceProvider::class
Quando você deseja fazer hash das rotas para um determinado modelo. A única coisa que você precisa é adicionar o traço HasHashedRouteKey
:
use MarkWalet LaravelHashedRoute Concerns HasHashedRouteKey ;
class TestModel extends Model
{
use HasHashedRouteKey;
//...
}
Depois disso, você pode usar o modelo como faria normalmente. Como a característica substitui os métodos resolveRouteBinding()
e getRouteKey()
, nenhuma alteração extra é necessária em seu código.
Você precisa alterar seu código ao criar seus URLs, obtendo manualmente a propriedade $model->id
do seu modelo. Então você terá que alterar essas chamadas para $model->getRouteKey()
.
A configuração padrão é definida em hashed-route.php
. Se quiser editar este arquivo, você pode copiá-lo para sua pasta de configuração usando o seguinte comando:
php artisan vendor:publish --provider= " MarkWaletLaravelHashedRouteHashedRouteServiceProvider "
Neste arquivo você pode configurar diferentes codecs para codificação e decodificação de chaves, bem como definir uma configuração padrão.
Você pode substituir essa configuração definindo a propriedade codec
em seu modelo.
Os drivers de codec suportados são: null
, hashids
, optimus
e base64
. Use o driver null
se quiser desabilitar o hash da chave de rota.