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">
.
.
.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
fügen Sie den folgenden code in deine global.asax-Seite und entfernen Sie die ersten 3 Zeilen von deinem logout () - Funktion.
InformationsquelleAutor sudil ravindran pk
Habe ich nur verwendet, SetExpires mit DateTime.Nun passte Sie den lokalen server Zeit auf den Keks. Mit DateTime.UtcNow.Addminutes(-1) könnte der wahre Schuldige hier.
Auch, wenn Sie die Formularauthentifizierung verwenden, sehe ich nicht Ihren Anruf zu
Mvc4 tut OpenAuth in der Vorlage. Als ob Facebook ist Ihr Standard-Anbieter. Dies ist einer der ersten Sache, die Sie krabbeln, wenn die Verwendung dieser Vorlage. Die Frage impliziert, dass openauth wurde gekickt Formen.
nicht sicher, ob ich verstanden, Ihr Kommentar, aber MVC4 template hat OpenAuth und WebSecurity mit SimpleMembership die vorhandenen ersetzt ASP.NET -Rolle und Mitgliedschaft, so dass Sie nicht haben, authentifizieren Sie sich, um Facebook. Gut zu Lesen : weblogs.asp.net/jgalloway/archive/2012/08/29/...
Versucht mit FormsAuthentication.SignOut(); auch, aber back-Taste Szenario ist immer noch da. Aktualisiert die Frage mit dem code. Wunsch des Kunden ist die AD - / LDAP für die Authentifizierung basiert auf Gruppen, die für die Autorisierung.
Haben Sie versucht, nicht mit UtcNow?
InformationsquelleAutor Michael Viktor Starberg
Hinzufügen die folgenden attribute zu jeder
ActionResult
Methoden, die Rückkehr der sicheren Seiten im controller(s) arbeiten sollte:InformationsquelleAutor Matthew Dresser