حزمة Laravel تحل محل ربط نموذج المسار الافتراضي للحصول على إصدار أكثر أمانًا.
يمكنك تثبيت هذه الحزمة مع الملحن:
composer require markwalet/laravel-hashed-route
يستخدم Laravel 5.5 الاكتشاف التلقائي للحزم، لذلك لا يتعين عليك تسجيل مزود الخدمة. إذا كنت تريد تسجيل مزود الخدمة يدويًا، أضف السطر التالي إلى ملف config/app.php
الخاص بك:
MarkWalet LaravelHashedRoute HashedRouteServiceProvider::class
عندما تريد تجزئة المسارات لنموذج معين. الشيء الوحيد الذي عليك فعله هو إضافة سمة HasHashedRouteKey
:
use MarkWalet LaravelHashedRoute Concerns HasHashedRouteKey ;
class TestModel extends Model
{
use HasHashedRouteKey;
//...
}
بعد ذلك يمكنك استخدام النموذج كما تفعل عادةً. نظرًا لأن السمة تتجاوز أسلوبي resolveRouteBinding()
و getRouteKey()
، فلن تكون هناك حاجة إلى إجراء تغييرات إضافية على التعليمات البرمجية الخاصة بك.
يجب عليك تغيير التعليمات البرمجية الخاصة بك عندما تقوم بإنشاء عناوين URL الخاصة بك عن طريق الحصول يدويًا على خاصية $model->id
من النموذج الخاص بك. بعد ذلك سيتعين عليك تغيير هذه الاستدعاءات إلى $model->getRouteKey()
.
يتم تعريف التكوين الافتراضي في hashed-route.php
. إذا كنت تريد تحرير هذا الملف، يمكنك نسخه إلى مجلد التكوين الخاص بك باستخدام الأمر التالي:
php artisan vendor:publish --provider= " MarkWaletLaravelHashedRouteHashedRouteServiceProvider "
في هذا الملف، يمكنك تكوين برامج ترميز مختلفة لتشفير المفاتيح وفك تشفيرها، بالإضافة إلى تعيين التكوين الافتراضي.
يمكنك تجاوز هذا التكوين عن طريق تعيين خاصية codec
على النموذج الخاص بك.
برامج تشغيل الترميز المدعومة هي: null
و hashids
و optimus
و base64
. استخدم برنامج التشغيل null
إذا كنت تريد تعطيل تجزئة مفتاح المسار.