Prüfen, ob ASP.NET Session abgelaufen ist

Written on September 04, 2007

Will man mit ASP.NET prüfen, ob die Session eines Users abgelaufen ist, hilft folgender Code:

if (Context.Session != null) {
    if (Context.Session.IsNewSession == true) {
        string cookieHeader = Page.Request.Headers["Cookie"];
        if ((null != cookieHeader) && (cookieHeader.IndexOf("ASP.NET_SessionId") >= 0)) {
            if (Page.Request.IsAuthenticated == true) {
                FormsAuthentication.SignOut();
            }
            Page.Response.Redirect(redirectUrl);
        }
    }
}

Erklärung folgt später, habe eigentlich gerade überhaupt keine Zeit ;-)

Zunächst prüfen wir, ob für den aktuellen User eine Session vorliegt. Ist dies der Fall, prüfen wir ob die Session im aktuellen Request erstellt wurde. Ist dieser der Fall, prüfen wir, ob das Standard-Cookie "ASP.NET_SessionId" vorhanden und der cookieHeader-String nicht null ist. Ist dies der Fall, liegt ein Session Timeout (Session expired) vor.

Der Rest ist Kosmetik: wir prüfen, ob der User authentifiziert war und loggen ihn gegebenfalls aus. Danach erfolgt noch ein Redirect auf eine vorher definierte Redirect-Seite.