اذهب إلى المحتوى

السؤال

نشر

لو سمحتو عم جرب ساوي route معينة:

Route::group(["middleware"=>['auth:sanctum']],function(){
	Route::get('/getRole', [UserController::class, 'getRole']);
	});

لكن كل ما اقوم بطلب الAPI بهالشكل:  http://127.0.0.1:8000/api/getRole

يرجع لي هالرسالة:

{
    "message": "Unauthenticated."
}

لكني أريد تغيير هالرسالة الافتراضية التي تظهر في حال الشخص اللي يطلبها غير مسجل دخول. كيف أقوم بذلك؟؟؟

Recommended Posts

  • 0
نشر

نعم يمكن ذلك حيث إن auth:sanctum إذا لم يكن الشخص قيد تسجيل الدخول فانه يقوم بارسال خطأ AuthenticationException , 

ويمكننا اضافة رسائل معينه او تخصيص الرد على هذا النوع من الاخطاء كالتالي.

لنقم بالذهاب الى ملف app\Exceptions\Handler.php ونقم بكتابة هذا الكود .

use Illuminate\Auth\AuthenticationException;

public function register()
{
  $this->renderable(function (AuthenticationException $e, $request) {
    if ($request->is('api/*')) {
        return response()->json([
          'status_code' => 401,
          'success' => false,
          'message' => 'هنا الرسالة التى نريدها.'
        ], 401);
    }
   });
}

حيث نقوم بكتابة اول سطر بعد اسطر ال use فى الملف ونقوم باستبدال دالة register بالكود السابق , أما إذا كانت دالة register ليست فارغة فلنقم فقط باضافة السطر الذى بداخل الدالة إلى الدالة الموجودة فى الملف لديك .

ويمكنك تخصيص اى رسالة او بيانات إضافيه تريدين إضافتها .

  • 0
نشر

الحل بسيط بالذهاب الى المسار التالي 

app/Exceptions/Handler.php

وقومي بوضع الاستدعاء التالي في اعلى الملف 

use Illuminate\Auth\AuthenticationException;

 

وبعدها ضعي التابع التالي داخل كلاس ال Handler :

protected function unauthenticated($request, AuthenticationException $exception)
{
   if ($request->expectsJson()){
       return response()->json(['message' => "Token is expired"], 401);
   }

   return parent::render($request, $exception); 
}

 يمكن نغير الرسالة بتغير الرسالة التالي كما تريد او ارجاع اي رسالة او رد ترغب به 
 

Token is expired

 سوف يظهر الرد كالتي 
 

{
    "message": "Token is expired"
}

حيث قمنا بعمل Overriding للدالة unauthenticated باعادة تعريفها مرة اخرة وتغير الجسم الخاص بها 

وتعبر رسالة unauthenticated نوع من الException لذلك الموقع المناسب لها في ملف Handler الخاص بال Exception

  • 0
نشر
بتاريخ 1 ساعة قال محمد_عاطف:

نعم يمكن ذلك حيث إن auth:sanctum إذا لم يكن الشخص قيد تسجيل الدخول فانه يقوم بارسال خطأ AuthenticationException , 

ويمكننا اضافة رسائل معينه او تخصيص الرد على هذا النوع من الاخطاء كالتالي.

لنقم بالذهاب الى ملف app\Exceptions\Handler.php ونقم بكتابة هذا الكود .

use Illuminate\Auth\AuthenticationException;

public function register()
{
  $this->renderable(function (AuthenticationException $e, $request) {
    if ($request->is('api/*')) {
        return response()->json([
          'status_code' => 401,
          'success' => false,
          'message' => 'هنا الرسالة التى نريدها.'
        ], 401);
    }
   });
}

حيث نقوم بكتابة اول سطر بعد اسطر ال use فى الملف ونقوم باستبدال دالة register بالكود السابق , أما إذا كانت دالة register ليست فارغة فلنقم فقط باضافة السطر الذى بداخل الدالة إلى الدالة الموجودة فى الملف لديك .

ويمكنك تخصيص اى رسالة او بيانات إضافيه تريدين إضافتها .

شكرا لك

بتاريخ 1 ساعة قال Ali Ibrahim12:

الحل بسيط بالذهاب الى المسار التالي 

app/Exceptions/Handler.php

وقومي بوضع الاستدعاء التالي في اعلى الملف 

use Illuminate\Auth\AuthenticationException;

 

وبعدها ضعي التابع التالي داخل كلاس ال Handler :

protected function unauthenticated($request, AuthenticationException $exception)
{
   if ($request->expectsJson()){
       return response()->json(['message' => "Token is expired"], 401);
   }

   return parent::render($request, $exception); 
}

 يمكن نغير الرسالة بتغير الرسالة التالي كما تريد او ارجاع اي رسالة او رد ترغب به 
 

Token is expired

 سوف يظهر الرد كالتي 
 

{
    "message": "Token is expired"
}

حيث قمنا بعمل Overriding للدالة unauthenticated باعادة تعريفها مرة اخرة وتغير الجسم الخاص بها 

وتعبر رسالة unauthenticated نوع من الException لذلك الموقع المناسب لها في ملف Handler الخاص بال Exception

شكرا لشرحك فبعض الامور التي اوضحتها لم اكن افهمها بشكل جيد

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...