Ci sono un sacco di domande (e informazioni) sulla creazione di membri di asp.net, fornitori di ruoli e simili. Se si debba o meno utilizzare la piattaforma integrata fornita da microsoft, o il ruolo estendere le classi base e il proprio ruolo.Come gestire al meglio le autorizzazioni (non i ruoli) nell'appartenenza a asp.net, in particolare in ASP.NET MVC
Ho deciso di estendere i provider predefiniti e implementare i miei provider di appartenenza e ruolo. Ora la mia domanda riguarda specificamente l'autenticazione dei ruoli.
Tradizionalmente, si creano ruoli come "Manager, Amministratore, Dipendente, Super utente" o qualsiasi altra cosa. Ma cosa dovrei/dovresti fare riguardo alle autorizzazioni che considero un granello di controllo più fine? Lasciatemi elaborare ...
All'interno del mio sito asp.net mvc ho diverse aree come amministrazione, gestione, messaggistica, reporting, ecc. Creerei ruoli per ognuno di questi come "Amministratore", "Manager", " Reporter 'ecc. Senza il ruolo appropriato, non è possibile accedere a quell'area del sito. Quindi avrei bloccato tutti i controller con questo a livello di classe.
Ma ora prendi un'area come un esempio; messaggistica, e dire che volevo avere autorizzazioni di grana più fine per CRUD; creare un messaggio, visualizzare/leggere messaggi, modificare messaggi, eliminare messaggi, ecc.
Finalmente la mia domanda. Come sarebbe meglio implementare questo più fine grana di controllo? Un approccio che vedo (non è sicuro se è buono), è quello di creare semplicemente i ruoli di appartenenza di asp.net per tutto. Quindi potrei avere ...
Messenger (ruolo a livello generale), CreateMessage, ReadMessage, EditMessage, DeleteMessage.
Da una parte vorrei che alcuni utenti fossero in grado di leggere/visualizzare i messaggi. Ma non necessariamente li crea o li elimina. Le singole azioni del controller possono avere i ruoli specifici applicati.
Vedi qualche problema con questo approccio? Hai un'idea migliore?
Soluzione So Far
ho deciso di creare il mio schema e implementare appartenenze personalizzato e provider di ruoli. Il mio schema include;
- utente
- ProfiloUtente
- permesso
- PermissionAssignment
- Ruolo
- RoleAssignment
assentate per il giorno successivo o due, ma verrà aggiornato con ulteriori informazioni quando Ho una possibilità
E 'possibile prendere un po' di più e dire non solo "questa azione è consentita?" ma dire "questa azione è permessa su questa particolare entità?" per esempio. la situazione di David Robbins indica dove il Manager A non è autorizzato a cancellare i messaggi creati dal Manager B? –
questo particolare scenario può essere gestito dall'azione, ma la logica effettiva di Autorizza e ActionResult cambierà un po ', una ricerca correlata precedente mostra come è possibile archiviarlo, http: //stackoverflow.com/questions/2872588/asp- net-mvc-autorizzazione-autorizzazione-per-utilizzare-classi-modello/2878159 # 2878159 – JOBG
Grazie Omar, ho lavorato un po 'di più su questo e aggiornerò quando con qualche informazione in più su dove sono. Saluti. –