Używam niestandardowego filtru autoryzacji na moich kontrolerach ASP.NET MVC, który przekierowuje użytkownika do adresu URL innego niż ekran logowania, jeśli nie uda się autoryzować konkretnej akcji.Jak radzisz sobie z autoryzacją działań, które zwracają wyniki inne niż ViewResult?
Jest to możliwe w przypadku akcji, które zwracają widoki, ale wiele moich działań zwraca inne typy wyników, takie jak PartialResult lub JsonResult.
Mój obecny filtr wygląda następująco:
< AuthorizeWithRedirect (Role: = "serveraccess" Kontroler: = "Home", Działanie: = "nieuprawniony") >
To wskazuje że jeśli użytkownik nie znajduje się w roli ServerAccess, to powinien zostać przekierowany do/Home/Unauthorized/
Jestem ciekawy, jak radzą sobie z tym inni ludzie? Wydaje się to szczególnie problematyczne, gdy weźmie się pod uwagę liczbę akcji, które mają być wywoływane tylko przez wywołania AJAX skryptów po stronie klienta. W jaki sposób/Home/Unauthorized/action może wiedzieć, czy osoba dzwoniąca miała otrzymać widok, partialview, json, zawartość itp.?
Pierwsza opcja to trasa, którą aktualnie wykonałem, z działaniem kontrolera dla każdego typu ActionResult tj. UnauthorisedPartial, UnauthorisedJSON. Pozwala mi to napisać jedną standardową stronę i zwrócić ją każdemu dzwoniącemu. – Nick