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

  • تحديد دور المستخدم
  • اعتمادًا على الدور ، تحكم في عرض عناصر قائمة التنقل
  • اجعل من المستحيل الانتقال إلى الصفحات التي لا يمكن لدور معين الوصول إليها

التحضير الأولي

لنبدأ بالجزء التحضيري. لتسهيل المزيد من التكوين ، من الضروري إنشاء متغير عام يخزن معلومات حول المستخدم الحالي. وبالتالي ، إذا كنت بحاجة إلى إجراء فحص ، فلن تحتاج إلى الاتصال بالجهة الخلفية في كل مرة وطلب معلومات حول المستخدم. يكفي قراءة البيانات الضرورية من المتغير العالمي.


من الضروري مراعاة الخيارات المختلفة التي يمكن من خلالها للمستخدم المرخص له الدخول إلى التطبيق:

  • تسجيل الدخول كنتيجة لمصادقة ناجحة على صفحة Login .
  • تسجيل الدخول نتيجة التسجيل.
  • تسجيل الدخول المباشر عبر رابط إلى صفحة معينة للمستخدمين المصرح لهم بالفعل.

في كل حالة من هذه الحالات ، يتم استخدام استعلام خلفي يقوم بإرجاع معلومات حول المستخدم. في عملية الأعمال المقابلة ، تحتاج فقط إلى إضافة كتلة Set Variable لتسجيل المتغير User_gv الذي قمت بإنشائه مسبقًا.

تتم إضافة هذه الكتلة إلى عملية الأعمال CheckAuth للمستخدمين المصرح لهم ، والموجودة في المجلد الذي تم Prebuilt في قسم عمليات الأعمال.

للدخول من خلال صفحات تسجيل الدخول أو التسجيل ، تتم إضافة الكتلة إلى العمليات التجارية للأزرار المقابلة.

دعنا نتحقق من النتيجة في صفحة البداية للتطبيق. للقيام بذلك ، دعنا نضيف Label ستحيي المستخدم بالاسم ، واعتمادًا على الدور ، ستكتب ما إذا كان مسؤولًا أم لا.

أنت بحاجة إلى إعداد عملية الأعمال التي يتم تنشيطها عند عرض أي Label ( Label onShow تشغيل العرض).

  1. Expand User . للحصول على معلومات حول اسم المستخدم وأدواره.
  2. In Array . للتحقق مما إذا كان المستخدم المحدد موجودًا في مجموعة Admins .
  3. If-Else . لتقلب الإجراءات اعتمادًا على نتائج الفحص.
  4. Set Variable (String) . لإنشاء متغير String بقيمة " NOT " إذا لم يكن المستخدم عضوًا في مجموعة Admins أو قيمة فارغة إذا كان كذلك.
  5. Concat Strings (Multiple) . لإنشاء عبارة كاملة مثل " Hi, Ken. You are NOT Admin ".
  6. Label Update Properties . للعرض النهائي لهذه العبارة على الصفحة.

إذا تم كل شيء بشكل صحيح ، فعندئذٍ مع أي متغير لدخول الصفحة ، ستحصل الشاشة على نتيجة مماثلة.

التحكم في رؤية عناصر القائمة

حان الوقت الآن للانتقال إلى الجزء الرئيسي. لنقم بإنشاء صفحة مخصصة للمسؤولين فقط وإضافة عنصر القائمة المقابل ( Admin Page ) للانتقال إليها. أفضل حل هو تعطيل الرؤية افتراضيًا.

باستخدام كتلة Navigate ، يجب عليك تحديد الصفحة التي تم إنشاؤها في معلمة Page ومعرفة معرف هذه الصفحة.

في هذا المثال ، توجد صفحة واحدة فقط ذات وصول مقيد ، ولكن من الأفضل توقع الخيار فورًا عندما يكون هناك العديد من هذه الصفحات وإنشاء متغير عام للقراءة فقط لتخزين قائمة الصفحات.

بعد ذلك ، تحتاج إلى إنشاء عملية الأعمال نفسها (دعنا نسميها Set NavItem Visibility ) للتحكم في رؤية عناصر قائمة التنقل.

  1. Expand User . للحصول على معلومات حول أدوار المستخدم.
  2. In Array . للتحقق مما إذا كان المستخدم المحدد موجودًا في مجموعة Admins .
  3. For each loop . لتشغيل الحلقة لجميع الصفحات المحددة في المتغير العام.
  4. NavItem Update Properties . للتحكم في رؤية عنصر ما ، بناءً على ما إذا كان المستخدم مسؤولاً أم لا.

يجب إضافة كتلة عملية الأعمال التي تم إنشاؤها قبل الانتقال إلى الصفحة الرئيسية في عمليات الأعمال الخاصة بأزرار تسجيل الدخول وتسجيل المستخدم (سابقًا ، تمت إضافة كتل Set Variable " إليها لتسجيل متغير بمعلومات حول المستخدم الحالي).

التحكم في الوصول عبر رابط مباشر

آخر شيء يجب القيام به هو إعداد عملية تجارية يتم تنفيذها في كل مرة يتم فيها تشغيل التطبيق بواسطة مشغل "تشغيل On app launch ". كما في الخطوة السابقة ، قم بإضافة كتلة Set NavItems Visibility للمستخدمين المصادق عليهم.

بالإضافة إلى ذلك ، من الضروري توفير الحماية ضد الوصول إلى صفحة مغلقة عبر رابط مباشر:

  1. In Array (Admin_pages) . للتحقق مما إذا كانت الصفحة الهدف موجودة في قائمة صفحات المسؤول فقط.
  2. If-Else . لتقلب الإجراءات اعتمادًا على نتائج الفحص. إذا كان False ، يمكنك الانتقال إلى الصفحة المحددة. في حالة True ، يلزم إجراء فحص إضافي للحق في الوصول إلى هذه الصفحة.
  3. Expand User . لقراءة معلومات المستخدم من المتغير User_gv .
  4. In Array . للتحقق من العضوية في مجموعة Admins .
  5. If-Else . لتحديد الإجراءات اعتمادًا على وجود حقوق المسؤول أو غيابها.
  6. Navigate . للانتقال إلى الصفحة المطلوبة أو لإعادة التوجيه إلى صفحة البداية في حالة محاولة مستخدم ليس لديه الحقوق المناسبة فتح صفحة مخصصة للمسؤولين فقط.

الصفحات المحددة محمية الآن من الوصول غير المصرح به. في حالة عدم وجود حقوق ، لا يتم عرضها في القائمة ولا يمكن الوصول إليها حتى من خلال رابط مباشر.

من المهم أن تتذكر أن حماية الوصول لصفحات معينة لا تعني الحماية التلقائية لنقاط النهاية التي يمكن استخدامها على تلك الصفحات. للقيام بذلك ، إذا لزم الأمر ، في إعدادات Middleware Token Auth ، تحتاج إلى تحديد مجموعات المستخدمين التي لديها حقوق الوصول إلى نقطة النهاية المحددة.

Was this article helpful?

AppMaster.io 101 حلقة دراسية مكثفة

10 وحدات
2 أسابيع

لست متأكدا من أين تبدأ؟ ابدأ في الدورة التدريبية المكثفة للمبتدئين واستكشف AppMaster من الألف إلى الياء.

ابدأ الدورة
Development it’s so easy with AppMaster!

هل تريد المزيد من المساعدة؟

حل أي مشكلة بمساعدة خبرائنا. وفر الوقت وركز على بناء تطبيقاتك.

headphones

اتصل بالدعم

أخبرنا عن مشكلتك ، وسنجد لك حلاً.

message

دردشة المجتمع

ناقش الأسئلة مع مستخدمين آخرين في محادثتنا.

الانضمام إلى المجتمع