Cześć, piszę aplikację w ASP.NET MVC i natrafiłem na dziwny przypadek za którego nie wiem nawet jak się zabrać aby go usunąć. Na stronie mam umieszczone Ajax.ActionLink'i które po kliknięciu, update'uja określony element strony. W momencie gdy user jest aktywny wszytko gra, natomiast jeżeli user przez pewien czas będzie nieaktywny(sesja wygasa) wtedy jesteśmy przekierowywaniu do panelu logowania i tutaj zaczyna się problem. Jeżeli w momencie wygaśnięcia sessji naciśniemy na owe ActionLinki element z update'uje cały panel logowania. Jak sobie z tym poradzić ?
A jak dodasz atrybut AllowAnonymous
do akcji którą uruchamiasz tym ajaxem?
Sęk w tym że te akcje mają być ukryte przed nieautoryzowanym userem..:(
Przecież nie musisz odkrywać wszystkich akcji, a tylko to czego używa ten ajax. A jeśli to Ci nie pasuje to co w ogóle chcesz aby się stało po wygaśnięciu sesji?
Jeżeli wygaśnie sesja to chcę aby przeniosło usera do formularza logowania i tak faktycznie jest! Ale w momencie kiedy sesja wygasa NIE ODŚWIEŻAM!!!! strony tylko bezpośrednio kliknę na link wtedy nadpisuje mi te pole owym formularzem logowania. Trochę słaba opcja z takim czymś :D
http://www.codeproject.com/Articles/655086/Handling-authentication-specific-issues-for-AJAX-c
Powyższe rozwiązanie jest eleganckie. Oprócz tego możesz to załatwić jakimś hackiem po stronie klienta, np. sprawdzić, co dostajesz w odpowiedzi na żądanie ajax; jeśli jest to strona logowania, przekierować całą stronę. Ale dużo ładniej polegać na kodzie odpowiedzi http.