2010-06-25 15 views
5

Korzystam z .NET mvc2 dla mojej aplikacji. Potrzebuję niestandardowej autoryzacji moich działań. Mam trochę google i wydaje mi się, że są dostępne dwie opcje.Autoryzuj filtry a Filtry akcji

  • Implementacja logiki w OnActionExecuting w niestandardowych działań Filtr see this post
  • podklasa AuthorizeAttribute lub zaimplementować interfejs Iauthorization i umieścić tam moją logikę

Moje pytanie tutaj jest ta, która technika jest korzystne z zalet i wad przy użyciu każdej techniki edytowane: Co więcej, mogę przesłonić metodę onActionExecuting i onAuthorization w moim kontrolerze bazowym, co daje mi korzyści z dostępu do zmiennych kontrolera directl y.

+0

Czy znalazłeś jakieś za i przeciw? W tej chwili mam do czynienia z tym samym pytaniem. Jakie było Twoje rozwiązanie? –

+0

używanie onActionExecuting daje także dostęp do prywatnych członków. podczas gdy w filtrach masz prawdopodobnie dostęp tylko do publicznych właściwości i metod. Użyłem podklasy AuthorizeAttribute, ponieważ jest to właśnie dla niej i daje czysty podział wątpliwości –

Odpowiedz

3

Chociaż obie opcje są OK, to najlepiej do podklasy AuthorizeAttribute z tych powodów:

  1. Oddzielenie obawy.
  2. MVC zapewnia AuthorizeAttribute w tym celu (nie walcz z frameworkiem).
  3. Filtr autoryzacji jest uruchamiany jako pierwszy - przed innymi filtrami (na Pro ASP.NET MVC3 Framework, strona 431). Dzięki temu żaden niepotrzebny kod nie zostanie wykonany, jeśli nieautoryzowany użytkownik uderzy w kontroler/akcję.