الهدف
بنهاية الدرس عندك Better Auth مثبت، sign-up و sign-in شغّالين محليا، وتقدر تشوف الـ session cookie في DevTools.
ليش هذا الحين؟
ترى أي app يخزّن بيانات مستخدمين يحتاج auth — بدونه أي شخص يقدر يوصل لكل البيانات. المشكلة إن الـ auth شكلها معقدة، فالمطورين يقولون "نضيفها بعدين" ويندمون. Better Auth تحل 95% من الحالات بكود قليل وقرارات أمان صحيحة جاهزة من البداية.
الفكرة
Authentication (authn) = منو أنت؟ تتحقق من هوية المستخدم.
Authorization (authz) = شنو تقدر تسوي؟ تتحقق من صلاحياته بعد ما تعرف هويته.
Sessions vs JWTs:
- Session = رمز عشوائي محفوظ في قاعدة البيانات. السيرفر يتحقق منه في كل request. تقدر تلغيه فورا.
- JWT = token فيه البيانات موقّعة. تقدر تتحقق منه بدون قاعدة بيانات، بس صعب تلغيه قبل ما تخلص مدته.
للـ founders: استخدم sessions. أسهل في الـ debugging، وتقدر تلغي session أي user بضغطة زر — مهم لو اكتشفت حساب مسروق.
كيف يشتغل الـ cookie session:
1. User يدخّل email + password
2. Server يتحقق → يسوّي session في الـ DB
3. Server يرسل Set-Cookie header مع session ID
4. Browser يحفظ الـ cookie
5. كل request بعدها يرسل الـ cookie تلقائيا
6. Server يتحقق من الـ cookie ويعرف منو أنت
OAuth ("Login with Google") = تفوّض الدخول لـ Google أو GitHub. أنت ما تحفظ passwords أبدا — Google تتحقق وترسل لك معلومات المستخدم.