Mam aplikacji MVC z następującym blokiem wewnątrz w pliku web.config:C# MVC: Jak przesłonić skonfigurowane przekierowanie uwierzytelniania?
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="2880" />
</authentication>
Tak więc, jeśli użytkownik zażąda stronę i autoryzacja nie powiedzie, to zostanie przekierowany do ~/login.
To dobrze, i potrzebuję tego dla większości moich kontrolerów. Mam jednak kontroler, z którym chciałbym ominąć tę regułę. Jak mogę zezwolić określonym kontrolerom na zignorowanie tej reguły?
Mój problem polega na tym, że w mojej aplikacji MVC (która ma kilka kontrolerów), mam pewien kontroler, który hostuje interfejs REST (nie jest przeznaczony do użycia w przeglądarce). Ponieważ ten kontroler nie jest przeznaczony do korzystania z przeglądarki, nie chcę, aby wysyłał całą stronę logowania (lub dowolną stronę, tylko ciągi lub częściowe widoki).
Pamiętaj, że używam niestandardowego [Autoryzuj ...] atrybuty na moich działaniach, a kiedy te się nie powiodą, przekierowują do akcji Błąd - ale, niestety, moja akcja Błąd (która zwraca krótki ciąg) jest przekierowywana do strony logowania z tego powodu ustawienie konfiguracji!
Mam zawroty głowy próbując to zrozumieć, co robię źle? W razie potrzeby mogę podać więcej szczegółów.
Czy dziedziczenie z AuthorizeAttribute lub implementating IAuthorizationFilter –
Dziedziczenie z AuthorizeAttribute. –