Wie kann die Ablaufzeit der Benutzerauthentifizierung über einen AJAX-Aufruf zurückgegeben werden?
Antwort
Zu viele Anzeigen?Aktion:
[HttpGet]
public ActionResult AuthenticationExpiration()
{
return Content(HttpContext.Request.Cookies[".ASPXAUTH"].Expires.ToString();)
}
Ansicht:
@Ajax.ActionLink("Zeit abrufen", "AuthenticationExpiration", new AjaxOptions{ HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "expirationTimeBox"})
UPDATE 1
Beachten Sie Ihre Formular-Authentifizierungskonfiguration:
Wenn Ihre slidingExpiration-Eigenschaft auf true gesetzt ist, wird die Cookie-Lebensdauer verlängert.
UPDATE 2
Ich habe eine Lösung für den konstanten DateTime.Min-Wert des Ablaufdatums gefunden: http://forums.asp.net/p/1158239/1920541.aspx#1920541
UPDATE 3
Entschuldigung, ich war von Anfang an verwirrt über das Ziel, das Ablaufdatum durch einen Ajax-Aufruf zu erhalten. Dies ist eine falsche Lösung, wie wir sehen. Nativer und korrekter wäre es, mit JavaScript zu arbeiten, ABER das ist unmöglich, wenn man dem glaubt, was ich gesehen habe:
Die einzige Lösung, die ich gesehen habe, besteht darin, das Ablaufdatum des .ASPXAUTH-Cookies auf einen separaten Cookie-Wert zu setzen, wenn Sie FormsAuthentication.SetAuthCookie(userName, isPersistent);
aufrufen, um DateTime.Now + new TimeSpan(//... Ihre Ablaufzeit, die in der web.config steht);
.