none
Back-Button nach dem Logout RRS feed

  • Frage

  • Hi,

    Es ist ja bereits ein bekanntes Problem: Wenn sich ein User ausloggt, dann kann er anschließend mit Hilfe des Zurück-Button durch alle aufgerufenen Seiten navigieren. Der Browser speichert alle Seiten im Cache und sendet dadurch auch keine Anfrage den Server.

    Ich möchte gerne dass der Zurück-Button im einloggten Zustand ganz normal funktioniert, aber sobald der User auf "Logout" klickt, soll man nicht mehr zurück kommen. Bisher habe ich beim Logout einfach die Session gelöscht (Abandon) und den User zur Login-Seite weitergeleitet.

    Ich weiß dass es sich grundsätzlich mit den "Response.Cache" Befehlen verhindern lässt, dass der Browser in den Cache wirft. Ich habe dazu mehrere Anleitungen gefunden:

    Laut diesen Anleitungen bräuchte ich nur den Code ins Button-Click-Event geben und fertig... funktioniert aber nicht:

    Protected Sub ButtonLogout_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ButtonLogout.Click Session.Clear() Session.Abandon() HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache) HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)) HttpContext.Current.Response.Cache.SetNoServerCaching() HttpContext.Current.Response.Cache.SetNoStore()
    Response.Redirect("Logout.aspx")

    End Sub

    Gibt es eine Möglichkeit erst nach dem Logout (also beim Drücken des Logout-Buttons) ein zurückgehen über den Zurück-Button zu verhindern, aber im eingeloggten Zustand die Funktion beizubehalten?

    LG,
    Domsi



    • Bearbeitet Domsik Freitag, 15. März 2013 08:01
    Sonntag, 10. März 2013 16:03

Antworten

  • Hallo Domsi,

    das Verhalten lässt sich nicht ändern. Entweder darf die Seite im Cache liegen oder eben nicht. Es gibt keine Möglichkeit, dem Client nach dem Abmelden zu sagen, dass er die gesamte History aus dem Cache entfernen soll.

    Man könnte höchstens probieren, per JavaScript beim Betreten der jeweiligen Seite einen Aufruf auf einen Webservice oder Handler zu machen, der den Loginstatus zurückgibt. Falls man nicht abgemeldet ist, wird per Javascript auf die Loginseite umgeleitet.

    Allerdings muss man hier auch aufpassen, da bspw. $(document).ready() auch nur beim Aufruf der Seite und nicht beim anzeigen aus der History heraus zündet.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Domsik Freitag, 22. März 2013 09:11
    Freitag, 15. März 2013 08:14
    Moderator

Alle Antworten

  • Hallo Domsi,

    Ich denke Du hast dass vergessen

    Response.Redirect("Logout.aspx");

    Gruss,

    Ionut

    Donnerstag, 14. März 2013 12:08
    Moderator
  • Hi Ionut,

    Sorry ich hab leider vergessen das Response.Redirect ins Forum zu kopieren, also das habe ich schon im Code eingebaut. Wenn ich dann auf der Logout.aspx bin, kann ich einfach mit den zurück-Button auf alle vorherigen Seiten zurück (Also was den Cache betrifft, sobald man PageLoad auslöst ist man natürlich wieder weg, da ja die Session gelöscht wurde beim Logout).

    LG,

    Domsi

    Freitag, 15. März 2013 08:04
  • Hallo Domsi,

    das Verhalten lässt sich nicht ändern. Entweder darf die Seite im Cache liegen oder eben nicht. Es gibt keine Möglichkeit, dem Client nach dem Abmelden zu sagen, dass er die gesamte History aus dem Cache entfernen soll.

    Man könnte höchstens probieren, per JavaScript beim Betreten der jeweiligen Seite einen Aufruf auf einen Webservice oder Handler zu machen, der den Loginstatus zurückgibt. Falls man nicht abgemeldet ist, wird per Javascript auf die Loginseite umgeleitet.

    Allerdings muss man hier auch aufpassen, da bspw. $(document).ready() auch nur beim Aufruf der Seite und nicht beim anzeigen aus der History heraus zündet.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Domsik Freitag, 22. März 2013 09:11
    Freitag, 15. März 2013 08:14
    Moderator
  • Hallo Stefan,

    Ok, danke für deine Infos! Ich hab das so befürchtet.

    Ich muss mir das genauer überlegen und intern in der Firma besprechen. Eventuell sperren wir die Speicherung des Caches überhaupt und bauen einen eigenen Zurück-Button auf der Oberfläche ein!

    Danke!

    LG,

    Domsi

    Freitag, 22. März 2013 09:13