/ / Przy używaniu identyfikatora celu aktualizacji Ajax, strona logowania była renderowana wewnątrz znacznika DIV po przekroczeniu limitu czasu uwierzytelnienia. MVC2 - asp.net-mvc

Przy użyciu identyfikatora docelowego aktualizacji ajax strona logowania została renderowana wewnątrz znacznika div po przekroczeniu limitu czasu. MVC2 - asp.net-mvc

o przekroczeniu limitu czasu z powodu uwierzytelniania formularza.cała moja strona logowania jest renderowana wewnątrz div z powodu zaktualizowanego atrybutu docelowego identyfikatora AJAX. czy jest jakieś rozwiązanie, w którym moja strona logowania otwiera się w nowym oknie po przekroczeniu limitu czasu uwierzytelnienia zamiast renderowania w znaczniku DIV.

w razie potrzeby mogę podać cały kod. pomóżcie mi ludzie.

z góry dziękuję!

Odpowiedzi:

1 dla odpowiedzi № 1

Miałem ten sam problem z aplikacją internetową, którą byłempracować nad. Musisz ustawić kontroler logowania z jego częściowym widokiem, zawierającym TYLKO potrzebne pola logowania. Gdy aplikacja wygaśnie, zostaniesz przekierowany do kontrolera logowania, który zwróci częściowy widok zawierający tylko żądane pola. Możesz także użyć JQuery lub JS, aby ukryć wszystkie elementy, których nie chcesz pokazywać na tej stronie.

Nie zapomnij ustawić kontrolera logowania w konfiguracji sieciowej na przekroczenie limitu czasu

<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="9000" />
</authentication>

Mam nadzieję że to pomoże.


0 dla odpowiedzi nr 2

w końcu znalazłem inny sposób

W akcji logowania możesz dołączyć niestandardowy nagłówek HTTP odpowiedzi:

public ActionResult LogOn(){
{
var model = ...
Response.AppendHeader("X-LOGON", "Checked");
return View(model);
}

a następnie zasubskrybuj całe wydarzenie i przetestuj obecność tego nagłówka i wykonaj odpowiednie czynności:

$.ajax({
url: "/home/some_protected_action",
success: function (data, textStatus, XMLHttpRequest) {
if (XMLHttpRequest.getResponseHeader("X-LOGON") === "Checked") {
// the LogOn page was displayed as a result of this request
// probably timeout => act accordingly
window.location = "<%=Url.Content("~/Account/LogOn") %>";
window.location.reload();
}
}
});