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

إزاي تأمن الـ API الخاص بيك في لارافيل باستخدام Laravel Sanctum

إزاي تأمن الـ API الخاص بيك في لارافيل باستخدام Laravel Sanctum أهلاً بك يا بطل في درس جديد من دروس تطوير الويب. أكيد جالك وقت وأنت بتبني مشروعك باستخدام لارافي

إزاي تأمن الـ API الخاص بيك في لارافيل باستخدام Laravel Sanctum
Reading Count: 180

إزاي تأمن الـ API الخاص بيك في لارافيل باستخدام Laravel Sanctum

أهلاً بك يا بطل في درس جديد من دروس تطوير الويب. أكيد جالك وقت وأنت بتبني مشروعك باستخدام لارافيل (Laravel) وفكرت، يا ترى إزاي أخلي الـ API بتاعي محمي؟ وإزاي أضمن إن الشخص اللي بيبعت الطلبات (Requests) هو فعلاً المستخدم اللي أنا عارفه؟ زمان كان الموضوع معقد شوية وبنضطر نستخدم مكتبات خارجية أو نكتب كود كتير عشان الـ Authentication، لكن النهاردة معانا "المنقذ" Laravel Sanctum.

يعني إيه Laravel Sanctum وليه لازم نستخدمه؟

حزمة لارافيل سانكتوم (Laravel Sanctum) هي الطريقة الرسمية والأسهل عشان تعمل نظام تأمين (Authentication) للـ APIs الخاصة بيك. سواء كنت بتبني تطبيق موبايل، أو تطبيق SPA زي React أو Vue، سانكتوم بيوفرلك نظام رموز الوصول (API Tokens) خفيف وسريع، وفي نفس الوقت بيوفر حماية للـ Sessions لو كنت بتستخدم نفس النطاق (Domain) بتاعك.

خطوات تثبيت وإعداد Sanctum في مشروعك

عشان نبدأ، الموضوع بسيط جداً ومش محتاج تعقيد. اتبع الخطوات دي:

  1. تثبيت الحزمة عبر مدير الحزم كومبوزر (Composer): composer require laravel/sanctum
  2. نشر ملف الإعدادات الخاص بالـ Configuration: php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
  3. عمل Migration للجداول الخاصة بـ Sanctum: php artisan migrate

ربط الـ User بالـ Tokens

دلوقتي لازم نروح لموديل المستخدم (User Model) ونضيف التريت (Trait) اللي بيخلي المستخدم يقدر يصدر رموز دخول. افتح ملف app/Models/User.php وأضف الكود ده:


use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
}

إزاي تنشئ رمز وصول (Token) للمستخدم؟

لما المستخدم يسجل دخول أو يعمل Login، إحنا محتاجين نرجعله Token عشان يستخدمه في الـ Requests الجاية. تقدر تعمل ده في الـ Controller بتاعك بالطريقة دي:


public function login(Request $request)
{
    $user = User::where('email', $request->email)->first();

    // التأكد من كلمة السر
    if (!$user || !Hash::check($request->password, $user->password)) {
        return response()->json(['message' => 'بيانات الدخول غير صحيحة'], 401);
    }

    // إنشاء الـ Token
    $token = $user->createToken('my-api-token')->plainTextToken;

    return response()->json(['token' => $token]);
}

حماية المسارات (Protecting Routes)

عشان نمنع أي حد مش مسجل دخول من الوصول لبيانات معينة، بنستخدم الـ Middleware اللي اسمه auth:sanctum. روح لملف الـ routes/api.php واكتب الكود ده:


Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

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

يا صديقي، الحماية مش مجرد كود بتكتبه، الحماية "عقلية" (Mindset). استخدم دائماً HTTPS في السيرفر بتاعك، وماتطلعش الـ Tokens في الـ Logs أبداً. اتعلم كمان إزاي تعمل إلغاء للرموز (Token Revocation) لما المستخدم يعمل تسجيل خروج (Logout)، عشان تضمن إن مفيش حد يقدر يستخدم الـ Token القديم. ممارسة التشفير والتأمين هي اللي بتفرق المبرمج الهاوي عن المبرمج المحترف اللي الشركات بتدور عليه.

أتمنى يكون الشرح بسيط وواضح، ولو واجهت أي مشكلة، دايماً اقرأ التوثيق الرسمي (Documentation) بتاع لارافيل، فهو كنز لا يفنى.


Share

Related posts

May 13, 2026 • 1 min read
Reading Count: 5
إزاي تخلي مشروعك بـ Inertia صديق لمحركات البحث عن طريق الـ SSR

إزاي تخلي مشروعك بـ Inertia صديق لمحركات البحث عن طريق الـ SSR أكيد مريت بالموقف ده: بدأت مشروعك بـ...

May 12, 2026 • 1 min read
Reading Count: 7
إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟

إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟ لو أنت مبرم...

May 12, 2026 • 1 min read
Reading Count: 10
دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API

دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API كثير مننا كمبر...