كل المنشورات / 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