Używam menedżera ról i uwierzytelniania systemu Windows dla mojego projektu asp.net mvc mamy 2 role, które są przeglądarkami i edytorami.Asp.net Menedżer ról MVC
<authentication mode="Windows" />
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<clear />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
Edytor może uzyskać dostęp do całej aplikacji, ale Viewer może uzyskać dostęp tylko dwie akcje
raz pierwszy starał się umieścić atrybut upoważniać do sterownika bazowego, który właśnie pozwoli edytor dostęp do wszystkiego:
[Authorize(Roles = "Editors")]
public class BaseController : Controller
i następnie dodaj atrybut Authorize do tych dwóch działań:
[Authorize(Roles = "Viewers,Editors")]
public ActionResult Report(PaymentsUnallocatedAndQueriedModel model)
to nie działa, nie pozwala widzowi uzyskać dostępu do akcji, które mają teraz sens.
Uważam, że nie jest dobrym pomysłem powtarzanie atrybutu Autoryzuj na górze każdej akcji.
mógłbyś mi powiedzieć, czy istnieje lepsze rozwiązanie tego
Dzięki za odpowiedź, miałem nadzieję, aby nie powtarzać zezwolić na górze każdej akcji, ponieważ redaktorzy mogą uzyskać dostęp do co akcje, ale wydaje się, nie ma innego sposobu – Elham
@Elham: Zawsze można spojrzeć na to SO zapytaj i zaimplementuj atrybut odmowy. Wydaje się, że jest to dużo pracy po prostu dlatego, że nie chcesz wpisywać atrybutu dla metody. http://stackoverflow.com/questions/4011458/mvc-authorize-attribute-deny –