I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

ازاي تبني نظام تسجيل دخول (Authentication) في لارافيل من الصفر؟

ازاي تبني نظام تسجيل دخول (Authentication) في لارافيل من الصفر؟ كتير مننا كمبرمجين بيعتمدوا بشكل كلي على حزم جاهزة زي Laravel Breeze أو Jetstream، وده شيء عظيم

ازاي تبني نظام تسجيل دخول (Authentication) في لارافيل من الصفر؟
Reading Count: 292

ازاي تبني نظام تسجيل دخول (Authentication) في لارافيل من الصفر؟

كتير مننا كمبرمجين بيعتمدوا بشكل كلي على حزم جاهزة زي Laravel Breeze أو Jetstream، وده شيء عظيم وبيوفر وقت. لكن، هل سألت نفسك قبل كدة: "هو ايه اللي بيحصل تحت الكبوت؟" لو حبيت تعمل نظام صلاحيات (Authorization) مخصص أو تحكم كامل في الـ Session، هتلاقي نفسك واقف في حتة ضلمة لو مش فاهم الأساسيات. النهاردة هنشرح إزاي تبني نظام دخول من الصفر في لارافيل (Laravel) بدون أي إضافات خارجية، عشان تكون فاهم كل سطر كود بتكتبه.

ليه محتاج تبني نظام Authentication يدوي؟

مش دايماً الحزم الجاهزة بتناسب متطلبات العميل. أحياناً بتحتاج دورة حياة (Lifecycle) معينة للمستخدم، أو ربط مع قاعدة بيانات خارجية، أو نظام تحقق (Verification) مخصص. فهمك للـ Authentication الأساسي هيخليك مبرمج أقوى بكتير، وهيعلمك إزاي لارافيل بيتعامل مع التوكينز (Tokens) والسيشن (Session).

الخطوة الأولى: تهيئة قاعدة البيانات والنموذج

أول حاجة محتاجينها هي جدول المستخدمين. لارافيل بييجي بجدول users جاهز، لكن خلينا نفترض إنك هتنشئ النظام يدوي. تأكد إن موديل الـ User بيعمل extend لكلاس Authenticatable عشان يقدر يتعامل مع نظام الدخول.


namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    protected $fillable = ['name', 'email', 'password'];
    protected $hidden = ['password', 'remember_token'];
}

في الـ Controller بتاعك، هنستخدم الـ Auth Facade. الميثود الأهم هنا هي attempt، واللي بتقوم بوظيفتين: التأكد من صحة البيانات، وإنشاء السيشن (Session) للمستخدم في حال كانت البيانات صحيحة.


public function login(Request $request)
{
    $credentials = $request->validate([
        'email' => ['required', 'email'],
        'password' => ['required'],
    ]);

    if (Auth::attempt($credentials)) {
        $request->session()->regenerate();
        return redirect()->intended('dashboard');
    }

    return back()->withErrors([
        'email' => 'البيانات دي مش مطابقة للسجلات عندنا.',
    ]);
}

الخطوة الثالثة: حماية المسارات (Middleware)

مش كفاية إننا نعمل تسجيل دخول، لازم نحمي الصفحات اللي المستخدم مش لازم يشوفها وهو "مش مسجل". هنا بيجي دور الـ Middleware. لارافيل بيوفر auth middleware جاهز، لكن فهم إزاي هو بيشتغل (إنه بيعمل Redirect للـ login route لو المستخدم مش مسجل) شيء جوهري.

تقدر تستخدمه في ملف الـ routes/web.php كدة:

Route::middleware(['auth'])->group(function () { Route::get('/dashboard', function () { return view('dashboard'); }); });

الخطوة الرابعة: التعامل مع الـ Logout

إنهاء الجلسة سهل جداً، كل اللي محتاجه إنك تنهي الـ Session وتمسح الـ Authentication state من الكوكيز (Cookies).


public function logout(Request $request)
{
    Auth::logout();
    $request->session()->invalidate();
    $request->session()->regenerateToken();
    return redirect('/');
}

نصيحة من أخ لمبرمج

يا بطل، الحزم الجاهزة (Packages) زي Breeze موجودة عشان تسرع شغلك، مش عشان تغنيك عن الفهم. جرب تبني نظام تسجيل دخول مرة واحدة بس بإيدك من الصفر، وهتلاقي نفسك بقيت بتشوف الكود بتاع لارافيل بنظرة تانية خالص. افهم إزاي الـ Guards بيشتغلوا، وازاي الـ Providers بيجيبوا البيانات، ولما تفهم دول، هتكون جاهز تتعامل مع أي تحدي أمني في مشاريعك الجاية.

بالتوفيق في رحلتك البرمجية، وخليك دايماً فضولي تجاه التفاصيل الصغيرة!


Share

Related posts

Jul 26, 2026 • 1 min read
Reading Count: 1
عنوان تلقائي

أهلاً بيك يا صديقي المبرمج في مقال جديد من سلسلة الشروحات التقنية بعيون مصرية خالصة. خليني أبدأ معاك...

Jul 25, 2026 • 1 min read
Reading Count: 4
ازاي توفر وقتك وتعمل أتمتة للمهام اليومية باستخدام PHP CLI

ازاي توفر وقتك وتعمل أتمتة للمهام اليومية باستخدام PHP CLI أهلاً بيك يا صديقي المبرمج في عالم الإنتا...

Jul 25, 2026 • 1 min read
Reading Count: 11
التشفير المتقدم في PHP: إزاي تحمي بيانات مستخدميك باستخدام Sodium وتنسى الطرق القديمة؟

التصنيف: تطوير الـ ويب (Web Development) وشروحات برمجية (Tutorials) التشفير المتقدم في PHP: إزاي تحم...