تخطَّ إلى المحتوى

كل المنشورات / Laravel / №02

لماذا تُرجع auth()->user() القيمة null في Laravel؟

صديق يرسل Bearer Token صحيحاً ومع ذلك يحصل على null. السبب أن Sanctum وPassport لا يملآن auth()->user() بأنفسهما، بل الـ middleware الخاص بهما. افهم دورة الطلب قبل أن تعتمد على سحر Laravel.

اقرأه على لينكدإن

بزمناته كان في رفيق إلي عم يواجه مشكلة بلارافيل …

بأحد الـ Controllers عم يستدعي:

auth()->user()

والنتيجة؟ null

مع إنو عم يبعت Bearer Token بشكل صحيح.

بعد نظرة سريعة على الكود، سألته سؤال بسيط جدًا:

حاطط auth middleware على الـ API route؟

جاوبني بكل براءة:

لا 🙂

وهون بنوقف عند نقطة مهمة جدًا بلارافيل
نقطة حلوة… بس بنفس الوقت ممكن تضيّعك وتضيع مشروعك لو ما فهمتها منيح:

Laravel Magic ✨

هيك Helpers متل auth()->user() ما بتشتغل من حالها، ولا كرمال سواد عيونك.

مكاتب متل:

  • Sanctum
  • Passport

ما بتعبي auth()->user() لحالها
اللي بعمل هالشي فعليًا هو الـ Middleware تبعهم

إذا ما مرّ الطلب من:

auth:sanctum

أو أي Auth middleware مناسب
فالـ context تبع الـ authentication ببساطة غير موجود

وبالتالي:

auth()->user(); // null

والأهم من هيك؟
إنت فيك تكتب Middleware بإيدك
وتعبي فيه الـ user
وتخترع الـ “magic” تبعك بنفسك 😉

الخلاصة 🔥

لارافيل مريحة، ذكية، وسحرية
بس إذا اعتمدت على الـ magic بدون ما تفهم شو عم يصير تحت الغطاء
رح تخونك بأبسط لحظة، وتضيع ساعات debugging بلا سبب واضح.

افهم الـ lifecycle
افهم الـ middleware
وبعدين استمتع بالـ magic

Esc

↑↓ للتنقل · Enter للفتح · Esc للإغلاق