كما لاحظنا من خلال دروس RESTful API السابقة، أن أي شخص يستخدم رابط api يتم عرض النتائج له بشكل مباشرة، لكن ببعض الأحيان قد نرغب بإضافة طبقة حماية لحماية routes يمعنى أنه يجب أن نتحقق أنه يحق للشخص إستخدام الـ api، ومن أحد الطرق التي يمكن إستخدامها أن يتم إرسال كلمة مرور وإسم مستخدم مع كل رابط api يتم إستخدامة.
خطوات حماية روابط api من خلال كلمة مرور وباسووورد.
إنشاء middleware مثلا باسم ProtectApiWithPassword.
php artisan make:middleware ProtectApiWithPasswordمن خلال تنفيذ أمر artisan أعلاه سيتم إنشاء middleware جديد باسم ProtectApiWithPassword
class ProtectApiWithPassword
{
public function handle(Request $request, Closure $next)
{
return $next($request);
}
}
نحتاج الأن لكتابة منطق العمل لهذا الـ middleware
public function handle(Request $request, Closure $next)
{
if($request->api_password !== env('API_PASSWORD','ethar_password')){
return \response()->json(['message'=>'UnAuthenticated']);
}
return $next($request);
}حيث إنه في كل رابط يجب إرسال باراميتر باسم api_password ويجب أن تساوي قيمة API_PASSWORD التي سيتم تعريفها في ملف .env أما إذا لم تكن معرفة فإنه يجب أن تكون قيمتها تساوي ether_password.
تعريف قيمة API_PASSWORD في ملف .env
API_PASSWORD=ethar_passwordتسجيل middleware في ملف kernel.php
في داخل المصفوفة routeMiddleware يتم تسجيل middleware
'ProtectApiWithPassword' => \App\Http\Middleware\ProtectApiWithPassword::class,
تطبيق الـ middleware الذي تم إنشاؤه على routes في ملف api.php
Route::group(['middleware'=>['ProtectApiWithPassword']],function() {
Route::apiResource('brands', BrandController::class);
});الأن لو قمنا بزيارة الرابط
http://www.test.test/api/v1/brandsفإننا سوف نحصل على رسالة خطأ
{
"message": "UnAuthenticated"
}وذلك لأنه في ProtectApiWithPassword قمنا بإخبارة أنه يجب إرسال parameter بإسم api_password وتكون قيمته تساوي ethar_password، حيث إنه يجب إرسال باراميتر api_password مع كل رابط

الأن لو تم زيارة الرابط
http://www.test.test/api/v1/brands?api_password=ethar_password
فإننا سوف نحصل على البيانات

التعليقات (0)
لا توجد تعليقات بعد — كن أول من يشارك رأيه.
أضف تعليقك