webentwicklung-frage-antwort-db.com.de

Drücken Sie nach dem Abmelden des Browsers den Zurück-Button, um zum letzten Bildschirm zurückzukehren

Hallo, ich entwickle zum ersten Mal eine Lösung in MVC, also stehe ich vor einem großen Problem, Wenn ich mich von meiner Anwendung (mvc razor-Webanwendung) abmelden, wird die Anmeldeseite angezeigt. Wenn ich jedoch die Zurück-Schaltfläche des Browsers drücke, erscheint der letzte Bildschirm Ich möchte das nicht, ich möchte, wenn ich die Zurück-Taste drücke, es wird immer noch dieselbe Anmeldeseite angezeigt. Hier ist mein Code für die Abmeldung

public ActionResult Logout()
    {
        Session.Clear();
        Session.Abandon();
        Session.RemoveAll();

        FormsAuthentication.SignOut();


        this.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
        this.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        this.Response.Cache.SetNoStore();          

        return RedirectToAction("Login");
    }
20
Karan Prince

Ich hatte dieses Problem vor einiger Zeit, das Deaktivieren des Cache für die gesamte Anwendung löste mein Problem. Fügen Sie diese Zeile einfach zur Global.asax.cs-Datei hinzu

        protected void Application_BeginRequest()
        {
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
            Response.Cache.SetNoStore();
        }

Hoffe das hilft.

57
AthibaN

Sie müssen den Cache META-Tag für alle zuletzt besuchten Seiten hinzufügen

Fügen Sie dies für alle Seiten hinzu, indem Sie ein CustomAttribute wie [NoCache] erstellen und dekorieren 

public class NoCacheAttribute : ActionFilterAttribute
{  
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);            
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();

        base.OnResultExecuting(filterContext);
    }
}


public class AccountController : Controller
{
    [NoCache]
    public ActionResult Logout()
    {
        return View();
    }
}

Oder probiere es mit Javascript auf der Seite

<SCRIPT type="text/javascript">
    window.history.forward();
    function noBack() { window.history.forward(); }
</SCRIPT>

<BODY onload="noBack();"
    onpageshow="if (event.persisted) noBack();" onunload="">
10
protected void Application_BeginRequest()
        {
            Response.Buffer = true;
            Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
            Response.Expires = -1500;
            Response.CacheControl = "no-cache";
            Response.Cache.SetNoStore();
        }

Add [Authorize] filter on each controller
0
Anup Shetty

sie können onClick-Ereignis von Javascript verwenden, um Browser zurück zu verhindern. zum Beispiel:

<a onclick="noBack()" href="#">Logout</a>

<Script type="text/javascript">
     window.history.forward();
     function noBack() { window.history.forward(); }
</Script>

Hoffe das wird dir helfen, Happy Coding!

0
Nemi Amin

Der einfachste Weg für eine MVC 5-Anwendung ist:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]

Über jeder Controller-Methode, die Sie nicht zwischenspeichern möchten. Oder wenn Sie .Core verwenden, gehen Sie wie folgt vor:

[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]

Einen schönen Tag noch!

0
ravenx30
  protected void Application_BeginRequest()
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
        Response.Cache.SetNoStore();
        string emailAddress = null;
        var cookie =Request.Cookies[FormsAuthentication.FormsCookieName];
        // Nothing to do if no cookie
        if (cookie != null)
        {
            // Decrypt the cookie
            var data = FormsAuthentication.Decrypt(cookie.Value);
            // Nothing to do if null
            if (data != null)
            {
                // Deserialize the custom data we stored in the cookie
                var o = JsonConvert.DeserializeObject<FormsAuthenticationTicketData>(data.UserData);

                // Nothing to do if null
                if (o != null)
                    emailAddress = o.EmailAddress;
            }
        }
        SetupAutoFac(emailAddress);
    }
0
Amit Rana