Domanda

Ho un'applicazione piuttosto ordinario Java EE in esecuzione su JBoss. Esso utilizza l'autenticazione JBoss DatabaseLoginModule JAAS. Ha anche strato applicativo utenti / ruoli in sospensione che sono esattamente lo stesso.

Ho avuto un'idea (che credo sia molto utile per me, comunque) per avere un po 'capacità posso impostare nell'oggetto di licenza del software (non usando Hibernate) che rende tutti gli utenti l'utente di sola lettura. Questo mi permette di fare una versione di sola lettura del prodotto da parte il trasferimento della licenza di esso.

Quello che mi piacerebbe fare è rimappare le associazioni degli utenti sulla base di un flag booleano accessibili all'interno del programma.

Quindi normalmente otteniamo (molti-molti join)

Utente - * * UserRole -Ruolo - * RoleActions

dove

user.roleid => role.id

Quando il booleano è impostato (un po 'capacità di impostare nella licenza software)

Mi piacerebbe JAAS di agire come tutti gli utenti sono stati ID ruolo = 1 quando la licenza dice così.

Tutte le idee?

È stato utile?

Soluzione

Per sottoclasse DatabaseServerLoginModule posso eseguire controlli supplementari. (Sulla licenza del software)

Banalmente posso quindi

  1. Se la licenza è scaduta, consentire a un utente di sola lettura (le credenziali sono fissi)

  2. Se la licenza ha la capacità bit impostato in sola lettura, dare la sola lettura utente (credenziali sono fissi)

Dal momento che l'accesso è stato intercettato, la ricerca dell'utente Hibernate sarà per il diritto utente.

Altri suggerimenti

Forse mi manca la barca qui, ma perché non farlo programatically?

In User oggetto, fornire un getter transitoria come getAuthenticatedRoles() che ulteriormente filtrata ciò Hibernate caricato. Additonally, rendere l'originale getter raccolta mappato protected, e utilizzare solo <=> da altro codice Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top