Logout Problem mit browser "zurück" - button

Habe ich erstellt Login/Logout-Funktionalität mit ASP.Net MVC 4. Ich habe meine eigene erstellte Formular für die Authentifizierung der Benutzer gegen das Active Directory. Es ist in Ordnung, die mit der Funktionalität.

Immer noch es ist ein großes Problem in Sicherheit. Sobald Benutzer klicken Sie auf den Abmelden-link, den er/Sie sich erfolgreich abgemeldet und Weiterleitung zum login-Formular wieder. Code im controller sieht wie folgt aus.

    public ActionResult Logout()
    {
        //Tried to include below 3 lines in _Layout.cshtml as well. But not identifying.
        Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
        Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
        Response.Cache.SetNoStore();            

        Session.Abandon();              

        return RedirectToAction("Login");
    }

ABER, sobald die Browser-zurück-button geklickt, kann der Benutzer zurück auf die andere Seiten und navigieren thru Seiten.

Ich ging durch mehrere Lösungen, die verschiedene Ansätze, aber keiner hat geklappt. Scheint der MVC-Ansatz ist sehr Verschieden von ASP.NET Formen. Schätzen Ihre Hilfe bei diesem.

(Ich bin auf der Suche um dieses Problem zu lösen mit C#/MVC Art und Weise. Nicht mit JavaScript zu deaktivieren/schließen des Browsers auf "Abmelden".)

UPDATE: Code-Fragmente

    [HttpPost]
    public ActionResult Login(LoginModel authUser)
    {
        //Call Helper to get LDAP info. Will return username with groups or null      
        UserModel userProfile = LdapLoginHelper.AuthenticateUser(authUser);

        if (userProfile != null)
        {                
            Session["UserName"] = userProfile.UserName;
            Session["LdapGroups"] = userProfile.LdapGroups;

            if (userProfile.LdapGroups.Contains("Administrators"))
            {
                //To be implemented                   
            }
            else
            {
                //To be implemented      
            }

            //Successful login. Redirect to main page
            return RedirectToAction("Home", "Home");
        }
        else
        {
            //Invalid Login. Redirect to Login page
            return RedirectToAction("Login");
        }            
    }



    public ActionResult Logout()
    {
        //Not worked
        Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
        Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
        Response.Cache.SetNoStore();
        Session.Abandon();

        ///Tried this too. Not worked.
        ///Session.Clear();
        ///FormsAuthentication.SignOut();

        ////Tried this also. Not worked.
        ////WebSecurity.Logout();

        return RedirectToAction("Login");
    }

Zusätzlich zu dieser gemeinsamen _Layout.cshtml-Seite-header sieht wie folgt aus.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
.
. 
.
haben Sie schmücken Ihre Controller / Aktionen mit [Genehmigen] - Attribut ? wie ist das Authentifizierungs-Informationen beibehalten? normalerweise haben Sie die session und ein cookie auth. Sind Sie sicher, dass Ihre Benutzer nicht mehr authentifiziert, nachdem Sie Ihre Logout () - Aktion ?
Noch arbeite ich auf das schreiben eines benutzerdefinierten Attributs für die Zulassung. Sobald der user angemeldet ist-Benutzernamen zugeordnet ist, eine session-variable.
Können Sie uns zeigen, wie Sie Ihre Login-Methode aussieht? Ein paar Worte, warum Sie nicht verwenden möchten ASP.NET built-in Autorisierung/Authentifizierung bietet, würde auch helfen
Wird update mit Login -, Logout-code-snippets. ASP.NET built-in Autorisierung/Authentifizierung Funktionen, die nicht verwendet, weil der Antrag der Kunden und wird Sie nutzen Active Directory statt.
Wie wäre es damit die Lösung von hier: stackoverflow.com/questions/16337149/...

InformationsquelleAutor chatura | 2013-01-20

Schreibe einen Kommentar