ما هي أفضل طريقة لإضافة الوصول الإداري بأمان إلى موقع الويب الخاص بي؟

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

سؤال

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

هل من الأفضل أن يكون لديك علامة مسؤول (ATTR_PROTTED) في جدول المستخدم نفسه غير مدروس؟ أو يجب أن يكون لدي جدول مستخدمي المسؤولين؟

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

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

سيكون أي اتجاه ومناقشة رائعة. أنا متأكد من أن المستخدمين المتفوقين الآخرين سوف يستفيدون من هذه المناقشة.

شكرا!

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

المحلول

لدى Ryan Bates سلسلة من ثلاثة أجزاء كبيرة من Railscasts حول هذا الموضوع والتي يجب أن تعطيك بعض الطعام للفكر:

هناك أيضا ثلاثة رلسات على تقنيات المصادقة المختلفة:

نصائح أخرى

أنا استخدم restful_authentication المساعد لهذا الغرض. ومن السهل جدا تقييد الوصول إلى أي وحدة تحكم أو أي طريقة. على سبيل المثال في تحكم إضافة هذه الوظيفة:

private
def authorized?
  user.admin?
end

أو

private
def authorized?
  user.admin? if update? || create?
end

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

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

أعتقد أنه يعتمد على نوع الإدارة.

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

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

العيب وجود مواقع متعددة هو أنه من الممكن الحصول على نماذج (التحقق من الصحة والجمعيات وما إلى ذلك) الخروج من المزامنة. العيب في وجود موقع واحد هو أنه قد ينتهي بك الأمر إلى إدراج جميع أنواع رمز القبيح "if-admin" في أجزاء سهلة الفهم من موقعك. المشكلة التي هي أسهل التعامل معها يعتمد على الاحتياجات الخاصة بك.

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