Skip to content

All posts / Laravel / №02

auth()->user() is null in Laravel? Check the middleware

A friend’s API returned a null user despite a valid bearer token. Sanctum and Passport don’t fill auth()->user() on their own; their middleware does. Learn the lifecycle before leaning on Laravel’s magic.

Read on LinkedIn

This post is written in Arabic; the English summary is above.

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

بأحد الـ 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

↑↓ to move · Enter to open · Esc to close