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

إزاي تأمن الـ 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

Jun 01, 2026 • 1 min read
Reading Count: 4
دليلك الشامل لربط بوابات الدفع (Payment Gateways) مع لارفيل (Laravel)

دليلك الشامل لربط بوابات الدفع (Payment Gateways) مع لارفيل (Laravel) أهلاً بيك يا صديقي المبرمج. أك...

Jun 01, 2026 • 1 min read
Reading Count: 7
دليل المبتدئين لدخول عالم الباك إند (Backend Development) في 2026

دليل المبتدئين لدخول عالم الباك إند (Backend Development) في 2026 بتشوف تطبيقات زي فيسبوك أو طلبات و...

Jun 01, 2026 • 1 min read
Reading Count: 10
إزاي تضيف الذكاء الاصطناعي (AI) لتطبيقات لاراڤيل (Laravel) باحترافية؟

إزاي تضيف الذكاء الاصطناعي (AI) لتطبيقات لاراڤيل (Laravel) باحترافية؟ أكيد مريت باللحظة دي: العميل ب...