Come gestire i privilegi nelle applicazioni WPF C #

3

Sto scrivendo il mio primo programma "grande" in C# e WPF . È un sistema di database ( MySQL ) che ha tre elementi principali: contratti, aziende e persone. Ho l'interfaccia utente principale giù per la sezione Aziende del Database e ora sto cercando di gestire i privilegi degli utenti prima di andare oltre.

Ho centrato un ostacolo su ciò che sarebbe un modo per gestire i privilegi degli utenti. I privilegi includevano l'accesso come poter aggiungere, modificare o cancellare una società, la possibilità di visualizzare i dettagli privati di una persona (indirizzo di casa ecc.) E l'accesso a dettagli specifici del contratto (valore del lavoro, il cui lavoro su di esso). p>

Ci saranno molti diversi privilegi in tutto il sistema del Database in quanto molti saranno molto specifici per la sezione in cui ti trovi (non sarà un semplice sistema di privilegio di aggiunta / modifica / cancellazione). Un altro livello di complicazione è che l'utente vedrà diverse parti del Database in base al reparto in cui lavorano. Ad esempio, un venditore vedrà alcuni dettagli specifici di un'azienda mentre un costruttore vedrà qualcosa di completamente diverso, ma sulla stessa azienda.

Il mio pensiero iniziale è di avere una tabella dei privilegi in MySQL , qualcosa che assomiglia a questo;

Ogniutentehapiùvociinquestatabella,inbaseallapartedelprogrammaincuisitrovano.Adesempio,sesonoinvendita,avrannocirca7/8vocibasateesclusivamentesuciòchelevenditepossonofareecosìviaecosìvia.Questosarebbegestitoinunsistemacomequesto;

Dove ogni CheckBox corrisponderebbe a 0 o a 1 in quella voce per quella persona nel Database. Quando l'utente si collega al mio programma di database, ho impostato i loro privilegi sin dall'inizio - potrebbe raggiungere qualcosa come 75 variabili globali per ciò che l'utente può o non può fare nel programma che guardo più in basso quando necessario.

La mia domanda è davvero quale sarebbe un modo per gestire i privilegi in questo sistema? Non ho avuto molta esperienza in questo settore, quindi sono aperto ai suggerimenti!

    
posta CBreeze 05.01.2016 - 13:55
fonte

1 risposta

2

Ho lavorato su un sistema con un elenco di privilegi (IE: crea utenti, modifica account cliente, ecc.) che sono stati assegnati ai gruppi. Gli utenti venivano quindi assegnati a quei gruppi e quindi avevano tutti i privilegi del gruppo.

Nella nostra applicazione, quando volevamo verificare un'autorizzazione, avevamo un metodo DoesUserHavePermission(PermissionEnum.Option) che potevamo chiamare (e in seguito trasformato in un filtro di azione del controller MVC). Il metodo ha esaminato l'utente nel gruppo per il permesso. Questo ci consente di aggiungere rapidamente un'autorizzazione a un gruppo di utenti. IE: tutti gli addetti alle vendite ora necessitano dell'autorizzazione Aggiungi cliente, basta aggiungerli al gruppo di vendita e tutti lo ottengono.

Abbiamo avuto 5 tabelle principali per le nostre autorizzazioni: Utenti, Gruppi, Privilegi, Gruppo utenti e GruppoPrivilegio. La logica era che se c'era un privilegio che un gruppo aveva una voce nella tabella GroupPrivilege (eliminata la necessità di campi bit) e se un utente faceva parte di un gruppo c'era una voce nella tabella UserGroup. (GroupPrivilege e UserGroup sono molte e numerose tabelle di unione).

Questo ha ridotto la configurazione al minimo dopo l'installazione iniziale e se abbiamo bisogno di un gruppo di utenti con un diverso set di permessi possiamo creare un nuovo gruppo con i soli privilegi necessari e assegnare gli utenti a quel gruppo.

    
risposta data 06.01.2016 - 19:41
fonte

Leggi altre domande sui tag