سؤال

لدي تطبيق Java EE عادي جدًا يعمل على JBOSS.ويستخدم مصادقة JBoss DatabaseLoginModule JAAS.كما أن لديها أيضًا مستخدمي/أدوار طبقة التطبيق في السبات وهي نفسها تمامًا.

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

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

لذلك عادةً ما نحصل على (انضمام العديد من الأشخاص)

المستخدم -*دور المستخدم*-الدور -*إجراءات الدور

أين

user.roleid =>role.id

عندما يتم تعيين القيمة المنطقية (بت القدرة المعينة في ترخيص البرنامج)

أود أن يتصرف JAAS كما لو أن جميع المستخدمين كانوا roleid =1 عندما ينص الترخيص على ذلك.

أيه أفكار ؟

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

المحلول

من خلال التصنيف الفرعي DatabaseServerLoginModule يمكنني إجراء فحوصات إضافية.(في ترخيص البرنامج)

تافهة أستطيع بعد ذلك

  1. إذا انتهت صلاحية الترخيص، فامنحه مستخدمًا للقراءة فقط (تم إصلاح بيانات الاعتماد)

  2. إذا كان الترخيص يحتوي على مجموعة بتات القدرة على القراءة فقط، فقم بمنح المستخدم للقراءة فقط (بيانات الاعتماد ثابتة)

نظرًا لأنه تم اعتراض تسجيل الدخول، فسيكون بحث مستخدم السبات مخصصًا للمستخدم المناسب.

نصائح أخرى

وربما أنا في عداد المفقودين القارب هنا، ولكن لماذا لا تفعل ذلك برمجيا؟

في الكائن User، وتوفير جالبة عابرة مثل getAuthenticatedRoles() التي من شأنها تصفية بالإضافة إلى ما Hibernate تحميل. وبالاضافة الى ذلك جعل الأصلي تعيين protected جمع جالبة، واستخدام getAuthenticatedRoles() فقط من جافا البرمجية الأخرى.

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