الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

التحكم في صلاحيات المستخدمين في ال Adf من خلال قاعدة البيانات - Database Security

Featured Replies

بتاريخ:

- بسم الله الرحمن الرحيم -

 

يسأل العديد من المبتدئين عن طريقة عمل حماية ونظام للتحكم في صلاحيات المستخدمين في تطبيقات ال ADF , ولذا سأحاول بإذن الله أن أشرح هذا الموضوع ،

ولعمل نظام حماية وللتحكم في صلاحيات المستخدمين في تطبيقات الـ ADF ، توجد أكثر من طريقة

 

منها التحكم في صلاحيات المستخدمين من خلال قاعدة البيانات او المعروف بـ Database Security

وهو موضوعنا اليوم سأحدثكم عنه:

 

وضع نظام حماية وصلاحيات المستخدمين في تطبيق يشمل عدة مستويات:

  • التحكم في الصفحة أو أحد مكوناتها (View)
  • التحكم في البيانات (Model)
  • التحكم في الانتقال (Controller)

 

ولتنفيذ ذلك نقوم بعدة خطوات:

 

أولا: قاعدة البيانات:

يتم تجهيز جدول أو أكثر في قاعدة البيانات فيه بيانات المستخدمين وصلاحياتهم.

مثلا: 

 

 
CREATE TABLE USERS (
USER_ID number primary key,
USER_NAME varchar2(15) not null,
PASSWORD varchar2(15)  not null,
NAME varchar2(50) not null,
USER_TYPE varchar2(10) not null
);
 
 

--------------------------------

 

ثانيا: عملية دخول المستخدم (Authentication):

وهي مرحلتين:

1) عملية دخول المستخدم أوالتأكد من وجوده في جدول المستخدمين (ِLogin).

2) الاحتفاظ بمعلومات المستحدم للاستفادة منها فيما بعد

 

ولها عدة طرق سنتطرق لها فيما بعد.

 

 

-----------------------------

 

ثالثا: التحكم في التطبيق من خلال الصلاحيات الموجودة في قاعدة البيانات (ِAuthorization):

بعد القيام بعملية Login ووضع معلومات المستخدم في ال Session Scope 

نقوم باستخدام باستخدام هذه المعلومات في حماية المستويات المختلفة في التطبيق:

 

أولا: التحكم في الصفحة أو أحد مكوناتها (View):

 

وذلك له اكثر من طريقة من أهمها التأثير في الخصائص (Properties) الموجودة في الصفحة أو أي من مكوناتها حسب نوع المكونات

هذه الخصائص مثل: الإلغاء والظهور والتعطيل (Render, Visible, disable)... إلخ.

,وهذه الخصائص إما أن يكون لها قيمة ثابتة بـ (True or False) 

أو أن تأخذ قيمة برمجيا باستخدام كود مثل (Java أو Expression language)

وطبعا يتم التأثير فيها طبقا لصلاحيات المستخدم والمعلومات التي تم تخزينها في ال Session Scope بعدعملية الدخول (Login).

 

 

ثانيا: التحكم في البيانات (Model):

 

- يتم ذلك باضافة Bind variable إلى ال View Object وليكن UserId_p مثلا

وذلك على سبيل المثال لفرز بيانات الموظف فقط.

 

- قم باضافة صفحة في Task flow ، وتنفيذ فيها شاشة لعرض بيانات الموظفين باستخدام نفس ال View Object.

 

- ثم نقوم بتمرير قيمة الموظف باستخدام Execute with param

أثناء الإنتقال إلى الصفحة في ال Task flow
واعطاؤه قيمة المستخدم الموجودة في ال Session Scope.
 
 
ثالثا: التحكم في الانتقال (Controller):
 
وذلك من خلال كتابة كود بالجافا مثلا يفسر عملية الانتقال طبقا لشكل الصلاحيات.
أو حتى يمكن من خلال الخصائص ، عن طريق عمل زر (Button) عادي للانتقال إلى الصفحة واخفاؤه بنفس الطريقة المستخدمة في الـ (View).
 
-----------------------------------
شكرا لقراءتكم لموضوعي, وأرجو أن قد وفقت في توصيل المعلومة وأورجو أن يفيدكم.
وللحديث بقية إن شاء الله.
بتاريخ:

جزاك الله خيرا

بتاريخ:

جزيت خيراااا..موضوع مهم.. انا لي فتره ببحث عنه. وجاري التطبيق

بتاريخ:
  • كاتب الموضوع

آمين

بتاريخ:

 

 

واعطاؤه قيمة المستخدم الموجودة في ال Session Scope.
 
 
ثالثا: التحكم في الانتقال (Controller):
 
وذلك من خلال كتابة كود بالجافا مثلا يفسر عملية الانتقال طبقا لشكل الصلاحيات.
أو حتى يمكن من خلال الخصائص ، عن طريق عمل زر (Button) عادي للانتقال إلى الصفحة واخفاؤه بنفس الطريقة المستخدمة في الـ (View).
 
-----------------------------------

انا وصلت لحد هنا..ممكن تواصل في الموضوع ياباشمهندس

بتاريخ:
  • كاتب الموضوع

بعد القيام بعملية Login ووضع معلومات المستخدم في ال Session Scope :

 

نأتي على (Button) مثلا يقوم بمناداة صفحة خاصة بالمديرين فقط

ونريده أن يظهر فقط في حالة أن يكون المستخدم من نوع (Manager)

 

في الخصائص على مستوى ال (Button)

توجد خاصية (Render) وهي خاصية من نوع (Boolean)، تعني إما التواجد في الصفحة أو الإلغاء تماما.

 

- نختار (Expression)

- ونضيف جملة ال  (Expression) ولتكن

#{sessionScope.UserType == 'Manager'}
بتاريخ:

جزاك الله خير يا هندسة ...

بتاريخ:
  • كاتب الموضوع

جزاك الله خير يا هندسة ...

وإياك يا هندسة

بتاريخ:

جزاك الله كل الخير

بتاريخ:
  • كاتب الموضوع

جزاك الله كل الخير

وإياك يا باشمهندس

  • بعد 3 أسابيع...
بتاريخ:

جزاك الله خير .. مقدمة سلسة وموفقة باذن الله .

  • بعد 2 أسابيع...
بتاريخ:

جزاك الله خيرا 

  • بعد 8 شهور...
بتاريخ:

السلام عليكم

 

هل عملت فيديو اخي 

بتاريخ:
  • كاتب الموضوع

السلام عليكم

 

هل عملت فيديو اخي 

لا يوجد فيديو لكن سأعمل إن شاء الله.

تم تعديل بواسطة kherooooo

  • بعد 2 شهور...
بتاريخ:

جزاك الله خير يا باشمهندس

الموضوع شيق جدا

بتاريخ:
  • كاتب الموضوع

جزاك الله خير يا باشمهندس

الموضوع شيق جدا

وإياك يا بشمهندس أحمد

  • بعد 2 سنة...
بتاريخ:

يعطيك العافية

يا بشمهندس قمت بانشاء قائمة ide-sw-menu-root.gif

 

ولكن عند اعطاء ItemNode قيمة render من خلال session scope بحيث ترجع true or false لا تأخذ تلك القيمة مع أنها تعمل في ال Pages وتعمل أيضا مع الازرار وترجع قيمة لل renderd 

ما المشكة ما ال menu

بتاريخ:

وكيف كتبت التعبير؟

  • بعد 1 شهر...
بتاريخ:

لوفي مثل جاهز لسهولة الرجوع إليه

بتاريخ:

مثال على ماذا؟

بتاريخ:

جزاك الله خير الجزاء ولاكن نريد فيديو توضيحي يا بش مهندس

بتاريخ:

مثال على ماذا؟

مثل حول موضوع الuser والصلاحيات باستخدام قاعدة بيانتات
بتاريخ:

سيتم عمله في المشروع بإذن الله

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

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

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.