Provider di ruoli personalizzati in ASP.NET MVC e in particolare un utente con più ruoli

0

Ho cercato in giro e non riesco a trovare nessuna risposta particolare che affronti ciò che sto chiedendo, ma senza dubbio sarà già stato menzionato da qualche parte.

So che quando si eredita da un System.Web.Security.RoleProvider astratto si sostituisce questo metodo public abstract string[] GetRolesForUser(string username);

e come nome del metodo ( GetRoles ) e il suo valore di ritorno ( stringa [] ) implica, è possibile restituire più di un ruolo per un singolo utente, ma potrebbe anche essere limitato a un singolo array di elementi tramite un provider di ruoli personalizzato.

Nella mia situazione lo sto implementando in un'applicazione web .NET MVC e utilizzando un provider di ruoli .NET personalizzato e ho deciso di decidere se consentire a un utente di avere più di un ruolo in un tempo.

Sto cercando qualsiasi motivo generale a favore o contro di ciò (in particolare per ragioni di implementazione)

La maggior parte dei punti che posso pensare sono specifici del dominio dell'app, qui ci sono un paio ...

  • Decidere quali autorizzazioni di ruolo hanno la priorità, ovvero cosa fare quando 1 ruolo autorizza una determinata azione e un altro deve negarlo, ma entrambi i ruoli sono assegnati allo stesso utente.
  • Indica se consentire agli utenti di attivare e disattivare i propri ruoli o assegnare sempre un ruolo solo a loro e fare in modo che un amministratore lo modifichi.

ma c'è una ragione particolarmente negativa per cui dovresti evitare di dare a un utente più ruoli alla volta? È meglio assegnare a un utente solo un ruolo?

    
posta Pricey 14.01.2014 - 22:43
fonte

1 risposta

3

I ruoli sono una di quelle cose che è strongmente dipendente dal dominio. In altre parole, assegni qualcuno a un ruolo perché è il ruolo che giocano a IRL.

Se non permetti ai ruoli di sovrapporsi, puoi trovarti nella scomoda posizione di creare ruoli "ibridi" che comprendono più responsabilità, ad esempio creando un ruolo che descrive solamente il "supervisore del QA / amministratore del codice / Floor Sweeper " ragazzo.

Se autorizzi più ruoli, puoi semplicemente assegnare questi tre ruoli e il gioco è fatto.

Risolvere i conflitti di ruolo è abbastanza facile; tu decidi solo quale ha la precedenza, o presumi "nega" a meno che non venga concesso un permesso specifico. Gli utenti normalmente non assegnano ruoli a se stessi; qualcuno più in alto nella catena alimentare deve farlo.

    
risposta data 14.01.2014 - 22:59
fonte

Leggi altre domande sui tag