|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Gestire le autorizzazione in un'applicazione web
Salve,
supponiamo di avere un'applicazione a cui possono accedere utenti con ruoli diverso Ogni utente può eseguire delle azioni in base al proprio ruolo e in base alla sua identità. Cosi ad esempio quando un utente clicca sul pulsante di modifica di un messaggio si controlla se l'autore del messaggio coincide con l'utente. In ogni pagina devono quindi essere eseguiti controlli di questo tipo; se ci sono molti tipi di utenti e molte possibili azioni la logica delle autorizzazioni viene ad essere "sparpagliata" su tutte le pagine ed è difficile gestirla e tenerla sotto controllo. Voi come implementereste la cosa? Io pensavo di creare un componente (manager delle autorizzazioni) che può essere riferito ovunque nell'applicazione e in grado di concedere o negare un'azione. Pensavo di assegnare un codice identificativo ad ogni tipo di azione (ad esempio inserimento di un messaggio, modifica di un messaggio, ...), e all'oggetto su cui è eseguita l'azione (ad esempio il codice del forum ed eventualmente il codice del messaggio se l'azione riguarda un messaggio già inserito). Il manager delle autorizzazioni in base a questi codici risponde in modo affermativo o meno. Ad esempio il manager delle autorizzazioni sa che in caso di modifica di un messaggio deve verificare che l'autore del messaggio coincida con l'utente corrente ed esegue la verifica interrogando le opportune tabelle del database. Chi scrive le pagine non deve preoccuparsi di come verificare le autorizzazioni, di quali tabelle andare a leggere, deve solo inviare la richista al manager. Cosa ne pensate? Avete altre idee o conoscete altri modi standard di gestire la cosa?
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2126
|
La tua soluzione va benissimo. Però io, ipotizzando che tu debba fare un forum, progetterei tale "manager" in maniera dedicata per ogni tipo di "oggetto". Cioè un manager che gestisce l'autorizzazione nei 3d, un manager che gestisce le autorizzazioni a livello forum e così via. (Perché in generale solo una porzione delle autorizzazioni è uguale in tutte le "pagine"). (ereditarietà insomma)
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole Ultima modifica di dierre : 23-09-2006 alle 18:31. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Non devo fare un forum, comuqnue avevo gia in mente di creare diversi componenti, uno per ogni contesto dell'applicazione, a cui il manager reindirizza le richieste in base ai codici che riceve.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#4 |
|
Messaggi: n/a
|
Una sorta di tabella delle autorizzazioni come in MySQL giusto? Credo sia una buona idea.
Ultima modifica di anonimizzato : 23-09-2006 alle 21:17. |
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Dal punto di vista del db nn spo quale sia la soluzione mgiliore, cioè se avere o meno una tabella che esplicitamente contiene le autorizzazioni. Se si adotta tale tabella i suoi record dovrebbero avere una struttura del tipo:
codice operazione | codice oggetto | codice utente Così se la tabella contiene un record relativo all'utente X, all'operazione OP e all'oggetto OG allora l'utente X può eseguire l'operazione OP sull'oggetto OG, in caso contrario l'autorizzazione è negata. Questa soluzione pero presesnta alcuni svantaggi: 1 - ridondanza delle informazioni: riprendendo l'esempio del forum, il fatto che un utente sia l'autore del messaggio gli conferisce automaticamente l'autorizzazione a modificarlo. Quindi questa autorizzazione viene ad essere memorizzata due volte nel database, una volta nella tabella che associa i messaggi agli autori e un'altra volta nella tabella delle autorizzazioni. E lo stesso varrebbe per tanti altri casi. 2 - Assegnare le autorizzazioni diventa più difficle: quando un utente scrive un messaggio bisogna parallelamente inserire nella tabella delle autorizzazioni un record che permetta all'utente di modificare il suo messggio, questa azione deve essere eseguita dalla componente applicativa che si occupa dell'inserimento del messaggi e quindi la gestione delle autorizzazioni sarebbe di nuovo frammentata. Alternativametne ogni componente apllicativa dovrebbe mandare al manager delle autorizzazioni una notifica delle azioni intervenute (ad esempio l'inserimento di un messaggio) in modo che il manager aggiorni la sua tabella, in questo caso pero ogni qualvolta un utente intraprende un azione il manager deve essere avvertito in modo che mantenga aggiornate le sue tabelle. Se nn si utilizza la tabella delle autorizzazioni il manager calcola le autorizzazioni all'occorrenza in base ai dati già presenti nelle altre tabelle, questa soluzione pero può essere meno efficiente. In entrambi i casi il manager deve essere in grado di calcolare un'autorizzazione in base ai dati delle tabelle; se si usa una tabella delle autorizzazioni, le autorizzazioni per un utente sono calcolate e aggiornate subito ogni qualvolta interviene un'azione, ma il manager deve ricevere le notifiche di tali azioni. Viceversa le autorizzazioni sono calcolate di volta in volta nel momento in cui sono richieste.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Quote:
ovviamente devi creare una tabella gruppi_utente che definisce appunto i gruppi utente e ad ogni utente assegnare uno o più gruppi! questo secondo me facilita la gestione in quanto gli utenti sarebbero raggruppati in gruppi e la definizione delle autorizzazioni sarebbe limitata appunto ai gruppi invece che ai singoli utenti! per avere un miglior controllo sarebbe ancora meglio: codice operazione | codice oggetto | codice gruppo | valore così potresti assegnare sia un valore positivo che negativo ed avere un maggior controllo nel caso in cui un utente appartenga a due gruppi diversi che presentano un'incongruenza in una particolare voce! mi sono spiegato male lo so ma è il meglio che riesco a fare ora come ora in questo stato... ...e che sono anche tornato presto stasera! inoltre non ho letto bene tutto il messaggio quindi se ho cozzato mi faccio la figura del coglione e amen! baci, 'iao |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
J2EE tu permette un approccio integrato totalmente dichiarativo al problema. Sei sicuro di aver bisogno di sviluppare una soluzione più flessibile?
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
Nel senso puoi stabilire che l'utente X o appartenente al gruppo X puo editare i propri messaggi. Cosi non hai la ridondanza dell'informazione il msg Y è stato scritto da X. |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
|
Quote:
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino. |
|
|
|
|
|
|
#10 | ||
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Quote:
Non utilizzo j2ee , asp.Net nel caso specifico. Qual è l'approccio in j2ee? La sola appartenenza di un utente ad un gruppo nn mi basta per stabilire le azioni che un utente può compiere, ma in alcuni casi ho bisogno di conoscere l'identità dell'utente. Quote:
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals Ultima modifica di anx721 : 24-09-2006 alle 13:41. |
||
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
per le applicazioni web non è un modello molto flessibile, e va bene solo per piccole applicazioni o esigenze di profilazioni abbastanza semplici, ma come dicevo è integrato nel linguaggio e negli application server. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:25.



















