2009-04-23 29 views
18

voglio fare il default ruoli per la mia classe di controllo a "Amministratori, Content Editor"ASP.NET MVC ruoli di autorizzazione

[Authorize(Roles = "Administrators, Content Editor")] 

che ho fatto questo che adornano il controller con l'attributo di cui sopra. Tuttavia, c'è una azione che voglio essere disponibile per tutti (vale a dire "Visualizza"). Come posso ripristinare i ruoli in modo che tutti (compresi gli utenti non autorizzati) abbiano accesso a questa azione.

Nota: So che avrei potuto adornare ogni singola azione altra azione con l'attributo Autorizza sopra, ma io non voglio avere a che fare tutto il tempo. Voglio che tutte le azioni dei controllori siano inaccessibili per impostazione predefinita in modo che se qualcuno aggiunge un'azione, deve prendere una decisione ponderata per renderla disponibile al pubblico in generale.

+0

possibile duplicato del [ASP MVC autorizzare tutte le azioni tranne qualche] (http://stackoverflow.com/questions/780436/asp-mvc-authorize-all-actions-except-a-few) – Matt

+1

Quindi stai cercando qualcosa come [http://stackoverflow.com/questions/780436](http://stackoverflow.com/questions/780436) ? – dave

+0

Sì, sembra giusto ... vorrei che questo fosse integrato nei controller standard, ma non è stato un grande sforzo per il codice. Grazie per avermi collegato. –

risposta

0

L'unica soluzione che riesco a pensare finora è creare e registrare un altro controller in modo da avere uno per l'accesso anonimo e uno per l'accesso autorizzato, ma non è così elegante come avrei voluto.

4

È possibile posizionare l'attributo Autorizza sui metodi di azione. Non solo a livello di classe.

Quindi, spostare l'attributo dalla classe controller per solo i metodi di azione che si desidera proteggere.

+1

Ciao Kieron, grazie per la risposta. Dato che la parte Note della mia domanda affermava che sono consapevole che ciò è possibile, ma voglio che l'impostazione predefinita per le azioni del controller sia inaccessibile senza dover adornarli con l'attributo authorize. –

+0

Penso che questa sia la migliore risposta. –

Problemi correlati