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

السؤال

Recommended Posts

  • 0
نشر (معدل)

نحن هنا نتحدث عن الـ permission أي صلاحيات الوصول.

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

يمكنك القيام بذلك من خلال إطلاعك على هذا المصدر، حيث يشرح لك القيام بتلك العملية بإستخدام php laravel.

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

عملية ربط الجداول ببعضها و إعطاء كل مستخدم ما يتطلبه من صلاحيات تتم عن طريق بناء العلاقات بين الجداول.

يمكنك من هنا فهم العلاقات بين الجداول في لغة البرمجة php laravel و كيف نحدد العلاقة اللازمة للجداول.

تم التعديل في بواسطة ياسين عناية
  • 1
نشر (معدل)

الفكرة بشكل عام ويختلف تنفيذها من لغة لأخرى 

  1. أن تضع في الموقع شاشة دخول 
  2. عندما المستخدم يدخل كلمة السر وأسمه يتم الإستعلام من قاعدة البيانات  عن صحة المدخلات , إن كان الإسم وكلمة السر صحيح .
  3. تقوم تخزين الid الخاص به في ال sessions أو ما يسمي بالجلسة. 
  4. تقوم بأخذ هذا الid وتقوم  بالإستعلام عنه من الداتا بيز  والهدف من ذلك الحصول على بياناته

مثال توضيحي لجملة الإستعلام  

SELECT * FROM Customers where id=session['id']

 

5.من خلال البيانات الراجعة من  جملة الإستعلام  تقومي بإظهار الصفحة المحددة للمستخدم.

6.يكون في صفحته متغيرات تقومي بوضع قيم للمتغيرات بحسب القيم التي تم إرجاعها من عبارة الإستعلام. 

تم التعديل في بواسطة omar haddad
  • 0
نشر

الحل في أنك تضيف column في قاعدة بياناتك تحتوي على قيم user permissions

مثلا نفرض أن معك admin و moderator و user ثم guest, ففي هذه الحالة ستعطي للأدمين قيمة 0 و الموديراتور قيمة 1 و اليوزر قيمة 2 بينما ال guest لا شيئ في ال  column المسمى role.

بعد هذا في كل login attempt ستأخد قيمة role الخاصة بصاحب user:pass وتخزنها في session حتى تستطيع أن تبادل القيمة بين الصفحات إن نجح المستعمل في الدخول.

ملاحظة: في الحماية غالب الناس تستعمل الطريقة التالية أثناء عمل implementation للفكرة التي قلت لك عنها بإعادة التوجيه

<?php

if($_SESSION['role'] !== 0){
	header('location: /login.php');
}
<html>
	<body>
		<!-- body for admin session -->
	</body>
</html>

لكنها غير صالحة بسبب يمكن للمخترق إختراق موقعك بأداة noredirect بكل بساطة ولحل المشكلة نضيف فقط دالة exit مثال:

<?php

if($_SESSION['role'] !== 0){
	header('location: /login.php');
	exit(); // block script interpretation 
}
<html>
	<body>
		<!-- body for admin session -->
	</body>
</html>

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...