كيف يجب أن أقوم بتنفيذ ACL الخاص بي في تطبيق ويب؟ [مغلق

StackOverflow https://stackoverflow.com/questions/546621

سؤال

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

في تطبيقاتي القليلة الأخيرة، قمت بإنشاء جدول (انظر أدناه) للأدوار (مثل CREATE POST, EDIT POST إلخ.) التي تحتوي كل منها على bitfield تطبيقها لذلك يمكنني ببساطة تعيين مستخدم بعض الحقوق في التسجيل وتحقق منها لاحقا (على سبيل المثال $user->hasRight(CREATE_POST)).

أنا أتساءل عما إذا كان هناك نهج أفضل لهذا. من المؤكد أنه يرتبط بالتأكيد عندما تكون الحقوق مرتبطة على وجه التحديد بالمستخدم (بإمكاني الحصول على جدول حيث يمثل كل يمين عمود منطقي ولكن يبدو ذلك فقط تحسنا صغيرا) - وما يحدث إذا قمت بتغيير بعض حولك؟

أنا لا أتطلع إلى استخدام المكتبات القياسية (التطبيق نفسه عبارة عن تجربة تعليمية بالنسبة لي: باستخدام postgresql، git etc.) على الرغم من أنني سعيد تماما بحيث من الإلهام منهم لإنشاء بلدي - لذلك إذا كان هناك شيء خاص تفكر فيه يجب أن ألقي نظرة على من فضلك قل ذلك :)

هل كانت مفيدة؟

المحلول

هذا هو الأساس نفس النهج الذي أتلقى في تطبيقات الويب الخاصة بي (وذهب القليل من التجربة والخطأ إلى ذلك بالنسبة لي). الفرق الوحيد هو، من المحتمل أن أستخدم جدول له أذونات مختلفة كأعمدة، بحيث إذا كنت ترغب في إضافة المزيد من الأذونات لاحقا، يمكنك ذلك. يؤدي استخدام BITS في عدد صحيح إلى حدودك لعدد ثابت من الأذونات، أي أكبر عدد ممكن من البتات الموجودة في عدد صحيح. عادة ما يكون هذا 32 الذي أفترض أنهما كافيا، لكنني أفضل عدم الحد من نفسي بهذه الطريقة.

ما يستحق، وهذا أيضا النموذج الذي يستخدمه PHPBB (أذونات كعمود الجدول)، وإذا كان جيدا بما يكفي ل AVEL أكثر تطبيق PHP Web الأكثر شعبية، فمن المحتمل أن تكون جيدة بما يكفي بالنسبة لك ؛-)

نصائح أخرى

يمكنك إلقاء نظرة على توثيق أمان الربيع (سابقا ACEGI)، وهو إطار جافا ACL مستعمل على نطاق واسع.

الوثائق شاملة وتوضح أيضا الاعتبارات المختلفة التي تم إجراؤها في تصميم مصادقة الروبوت والترخيص. حتى بدون استخدام Java، فمن القراءة جديرة بالقراءة.

يمكنك عرض صفحة فهرس للحصول على نظرة عامة وانطباع ما يفعله ACEGI (ولا) القيام به. يمكنك أيضا تخطي الحق في مفاهيم التفويض أو حتى إلى مخطط قاعدة البيانات.

أنا متأكد من أنك وجدت phpgacl بالفعل، ولكن هنا رابط في حالة عدم وجوده. قد يكون الأمر صعبا قليلا لفه رأسك في البداية، وبالتأكيد المكتبة صعبة (تستغرق وقتا طويلا) لتنفيذ مشروع، ولكن الوثائق والتجريبي هي نقاط مرجعية ممتازة.

PHP قوائم التحكم في الوصول عام

ال zend framework. لديه إكسل وهو ما يشبه ما تحاول القيام به.

تمت مناقشة نهج ACL في تطبيقات الويب، بشكل عام، على سبيل المثال هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top