Un package Laravel qui remplace la liaison de modèle de route par défaut pour une version plus sûre.
Vous pouvez installer ce package avec composer :
composer require markwalet/laravel-hashed-route
Laravel 5.5 utilise la découverte automatique des packages, vous n'avez donc pas besoin d'enregistrer le fournisseur de services. Si vous souhaitez enregistrer le fournisseur de services manuellement, ajoutez la ligne suivante à votre fichier config/app.php
:
MarkWalet LaravelHashedRoute HashedRouteServiceProvider::class
Lorsque vous souhaitez hacher les itinéraires pour un modèle donné. La seule chose que vous devez faire est d'ajouter le trait HasHashedRouteKey
:
use MarkWalet LaravelHashedRoute Concerns HasHashedRouteKey ;
class TestModel extends Model
{
use HasHashedRouteKey;
//...
}
Après cela, vous pouvez utiliser le modèle comme vous le feriez normalement. Étant donné que le trait remplace les méthodes resolveRouteBinding()
et getRouteKey()
, aucune modification supplémentaire n'est requise dans votre code.
Vous devez modifier votre code lorsque vous créez vos URL en récupérant manuellement la propriété $model->id
de votre modèle. Ensuite, vous devrez modifier ces appels en $model->getRouteKey()
.
La configuration par défaut est définie dans hashed-route.php
. Si vous souhaitez modifier ce fichier, vous pouvez le copier dans votre dossier de configuration en utilisant la commande suivante :
php artisan vendor:publish --provider= " MarkWaletLaravelHashedRouteHashedRouteServiceProvider "
Dans ce fichier, vous pouvez configurer différents codecs pour l'encodage et le décodage des clés, ainsi que définir une configuration par défaut.
Vous pouvez remplacer cette configuration en définissant la propriété codec
sur votre modèle.
Les pilotes de codec pris en charge sont : null
, hashids
, optimus
et base64
. Utilisez le pilote null
si vous souhaitez désactiver le hachage des clés de route.