2009-07-13 6 views
2

Ich möchte einen Einkaufswagen in meine Website integrieren. Der Einkaufswagen sollte so beschaffen sein, dass er zurückgesetzt wird, sobald der Benutzer sich aus der Anwendung abmeldet. Dies kann entweder über Sitzungen oder über die Datenbanktabellen erreicht werden.Warenkorb Implementierung

Was ist aus den beiden oben genannten zu bevorzugen? Gibt es Sicherheitslücken, wenn dies über Sitzungen abgewickelt wird?

+0

Sitzungen sind ziemlich sicher, aber nicht so skalierbar wie datenbankgestützte Sitzungsinformationen. Eine Datenbankunterstützung ist wahrscheinlich nicht so leistungsfähig wie im Zustand der Prozesssitzung. Für wie viele Nutzer erstellst du deine App? Benötigen Sie wahrscheinlich eine Webfarm? –

+0

Kannst du "Abmelden" definieren, bedeutet das, schließt den Browser oder klickt tatsächlich auf einen Abmeldeschalter, wenn letzteres, was bedeutet es, wenn der Benutzer nicht eingeloggt ist, können sie Dinge in einen Korb hinzufügen, wenn nicht eingeloggt? –

Antwort

0

Ich sehe nicht, warum HttpSessions Ihre Sicherheit erhöhen - wenn Ihre Sitzung entführt wird, dann ist vermutlich auch Ihr DB-Zugriff.

Wenn Sie wirklich beabsichtigen, dass der Warenkorb Ihres Benutzers vorübergehend sein sollte, ist Ihre HttpSession eindeutig ausreichend. Skalierende App-Server verfügen normalerweise über Funktionen zur Sitzungsreplikation, um einzelne Serverfehler zu beheben.

Ich bin auf lange Sicht skeptisch, dass solch ein volatiler Warenkorb wird immer sein, was Sie wollen, finde ich es sehr bequem, um Amazon zu durchsuchen und meinen Warenkorb zu montieren, dann lassen Sie es für Weile. Da es wahrscheinlich nicht viel mehr Arbeit ist, um Ihren Wagen in einer DB zu halten, würde ich wahrscheinlich dafür gehen.

0

Ich würde Sitzungen verwenden - keinen Punkt der Verstopfung Ihrer DB auf Daten, die beim Abmelden zerstört werden.

Plus, Sitzungen sind ziemlich sicher zu bedienen.

2

In der Sicherheitsabteilung wird keines der beiden dem anderen vorgezogen. Sie sollten verstehen, dass beide Konzepte im Grunde "Sitzungen" sind, aber eine davon wird in der App-Domäne behandelt, die andere wird in der DB-Domäne behandelt.

Appdomain Sitzungen:

  • Faster (No Round-Tripping zur Datenbank)
  • Nicht skalierbare
  • Neigt zu Concurrency Probleme auf Serverfarmen
  • Sessions werden auf Server-Neustart verloren

Datenbanksitzungen:

  • Langsamer (Rundreisen an die DB für jede Anfrage)
  • Einfachere auf Serverfarmen
  • Sessions offen startet auf dem Server gehalten werden maßstabs

Sie, wie viele Nutzer Ihre Website verwenden werden, in Betracht ziehen sollten . Wenn Sie viel schauen, werden Sie wahrscheinlich mehrere Server benötigen. In diesem Fall sind die Datenbanksitzungen die beste Wahl. Wenn Sie bei einem einzelnen Webserver/Datenbankserver bleiben, dann werden Appdomain-Sitzungen funktionieren.