2009-04-23 12 views
18

Chcę, aby domyślne role dla mojego Klasa kontrolera do „Administratorzy, zawartość Redakcja”ASP.NET MVC ról autoryzacji

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

Robiłem to przez adorning kontrolera z atrybutem powyżej. Jest jednak jedna akcja, którą chcę udostępnić wszystkim (mianowicie "Widok"). Jak mogę zresetować role, aby wszyscy (w tym zupełnie nieupoważnieni użytkownicy) mieli dostęp do tej akcji.

Uwaga: Wiem, że mogłem ozdobić każdą akcję innym działaniem z atrybutem autoryzacji powyżej, ale nie chcę tego robić cały czas. Chcę, aby wszystkie działania kontrolerów były domyślnie niedostępne, więc jeśli ktoś doda jakieś działanie, musi podjąć przemyślaną decyzję, aby udostępnić je ogółowi społeczeństwa.

+0

możliwym duplikatu [ASP MVC autoryzacji wszystkich działań z wyjątkiem nielicznych] (http://stackoverflow.com/questions/780436/asp-mvc-authorize-all-actions-except-a-few) – Matt

+1

Czy chcesz czegoś takiego jak [http://stackoverflow.com/questions/780436](http://stackoverflow.com/questions/780436) ? – dave

+0

Yup - wygląda na prawo ... chciałbym, żeby to było wbudowane w sterowniki std, ale nie było dużego wysiłku, żeby je kodować. Dzięki za połączenie mnie. –

Odpowiedz

0

Jedyne rozwiązanie, jakie mogę sobie wyobrazić, to stworzenie i zarejestrowanie kolejnego kontrolera, tak aby mieć jeden dostęp anonimowy i jeden do autoryzowanego dostępu, ale nie jest to tak eleganckie, jak bym chciał.

4

Możesz umieścić atrybut Authorize na metodach akcji. Nie tylko na poziomie klasy.

Przeniesienie atrybutu z klasy kontrolera do metod akcji, które chcesz zabezpieczyć.

+1

Cześć Kieron, dziękuję za odpowiedź. Jak zauważyłem w części Note mojego pytania, zdaję sobie sprawę, że jest to możliwe, ale chcę, aby domyślne działania kontrolera były niedostępne bez konieczności ozdabiania ich za pomocą atrybutu authorize. –

+0

Myślę, że to najlepsza odpowiedź. –