سؤال

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

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

المحلول

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

  1. إذا كان جميع المستخدمين الخاص بك ينتمي إلى فئة واحدة ولكن لديه حقل خاص (مثل userclass = (: العميل،: المشرف،: المسؤول، إلخ.) سيكون لديك الحد الأدنى من تعديلات التطبيقات، فقط تحقق من معلمة فئة المستخدم في وحدات التحكم / وجهات النظر الخاصة بك. أعتقد أنها ليست فكرة جيدة بالنسبة لك.

  2. أفضل الممارسات - لاستخدام استراتيجيات مصادقة MERB. إنها آلية مرنة للغاية، حتى تتمكن من تحديد الفصول التي تريد عملها معها.

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

authenticate(ClientAuth) do
  match('/profile').to(:controller => ProfileController)
end

authenticate(AdminAuth) do
  match('/admin').to(:controller => AdminController)
end

أو يمكنك استخدام المصادقة داخل وحدة التحكم:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth]

  def index
     ... your stuff ...
  end
end

أيضا، يمكنك حتى استخدام وحدة تحكم واحدة فقط للمصادقة لكلا الفئتين باستخدام كلا الاستراتيجيات مثل هذا:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth, ClientAuth]
end

فقط لأنك قمت بتعيين فئات المصادقة المختلفة (المسؤول، العميل) لاستراتيجياتك، ستتمكن من الحصول على معلومات حولها: Session.User.class (إنها طريقة روبي أساسية لمعرفة اسم الفصل للكائن)

هنا بعض الروابط المفيدة:

  1. http://www.slideshare.net/hassox/merb-auth-presentation.
  2. http://merbunity.com/tutorials/19.
  3. http://www.slideshare.net/carllerche/merb-pluming-the-router-presentation.
  4. http://merbivore.com/documentation/1.0/doc/rdoc/merb-auth-core-1.0/index.html؟a=c00000025&name=Strategy.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top