اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

تعد المصادقة المتعددة مهمة جدًا إذا كنت تعمل على تطبيق ويب كبير الحجم، فتمكنك من استخدام  صلاحيات مختلفة تابعة لجداول مختلفة للمستخدمين مثل جدول "المستخدمين" لتسجيل مستخدم الموقع وجدول "المشرفين" للمستخدم المسؤول أو للدخول إلى لوحة التحكم على سبيل المثال. وبهذه الطريقة توفر أمانًا وقوةً حيث يمكنك الفصل بين المستخدمين وإعطاء صلاحيات وصول مختلفة لكل نوع.
مثال عن تطبيقها:
أولاً نقوم بإنشاء مصادقة في حال لم تكن موجودة كالتالي:

php artisan make:auth

نقوم بإنشاء مودل للمدراء كالتالي، ونقوم بملء الحقول اللازمة ضمنه:

php artisan make:model Admin 

ثم نقوم بإنشاء المتحكم الخاص بالمدراء:

php artisan make:controller AdminController
class AdminController extends Controller
{
 
    public function __construct()
    {
        $this->middleware('auth:admin');
    }
  
    public function index()
    {
        return view('admin');
    }
}

ونلاحظ هنا أنه تم استخدام middleware وهو admin، ولكن لمستخدمي الموقع يجب أن نستخدم مصادقة أخرى، حيث لا يجب على المستخدمين العاديين الدخول إلى لوحة التحكم للموقع، فنقوم أولاً بمعالجة عملية المصادقة وتسجيل الدخول للمدراء عن طريق إنشاء متحكّم خاص بذلك كالتالي:

php artisan make:controller Auth/AdminLoginController

أما للمستخدمين العاديين فسيتم التحقق والمصادقة بشكل منفصل كالتالي:


public function showLoginForm()
{
    return view('auth.login');
}

وأخيراً لا ننسى تعديل ملف config/auth.php وإضافة الجزئية الخاصة بمصادقة المدراء كالتالي:

//المصادقة الافتراضية

'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

//مصادقة المدراء أو المشرفين التي قمنا بإنشائها

'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],
//
//
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],
       
    ],
//
//
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
       'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],
    ],
//

وهنا يمكننا ملاحظة أنه تمكّنا من فصل كيان المستخدم المدير عن كيان المستخدم العادي، عن طريق استخدام جدولين مختلفين في قاعدة البيانات واستخدام guard مختلف وجلسات مختلفة لكل منهما. وبنفس الطريقة يمكن إضافة نوع جديد آخر ينتمى أيضاً لجدول آخر في قاعدة البيانات وله صلاحيات وصول مختلفة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...