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: 257

ازاي تبني نظام تسجيل دخول (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

Jun 11, 2026 • 1 min read
Reading Count: 1
إزاي تأمن الـ Data Models في PHP 8.4 باستخدام ميزة Asymmetric Visibility

إزاي تأمن الـ Data Models في PHP 8.4 باستخدام ميزة Asymmetric Visibility أكيد مريت بالموقف ده كتير و...

Jun 10, 2026 • 1 min read
Reading Count: 6
تشغيل Laravel على الـ Edge: السر وراء السرعة الفائقة مع Laravel Cloud و FrankenPHP

تشغيل Laravel على الـ Edge: السر وراء السرعة الفائقة مع Laravel Cloud و FrankenPHP يا أهلاً بيك يا ص...

Jun 10, 2026 • 1 min read
Reading Count: 6
مستقبل PHP 8.4: إزاي الـ Property Hooks هتغير طريقة كتابتنا للكود

مستقبل PHP 8.4: إزاي الـ Property Hooks هتغير طريقة كتابتنا للكود لو كنت مبرمج PHP بقالك فترة، أكيد...