Frage Sitzungs-ID-Cookie in gwt rpc


Angenommen, ich werde meinen eigenen Sitzungscode erstellen, was ist der richtige Weg, um einen eindeutigen und sicheren Sitzungs-ID-Cookie in Java zu generieren.

Soll ich nicht mein eigenes rollen, sondern etwas verwenden, das bereits standardisiert ist?

Ich verwende gwt und die Google App-Engine-Plattform.

Wie führe ich Sitzungen über Neustarts von Browsern / Servern hinweg fort?


8
2017-09-05 00:45


Ursprung


Antworten:


Verwenden von Servlet-Sitzungen in GWT

In der Remote-Service-Implementierungsklasse:

String jSessionId=this.getThreadLocalRequest().getSession().getId();

Im Client-Code:

String jSessionId=Cookies.getCookie("JSESSIONID");

Aktivieren_Sessions

appengine-web.xml

<sessions-enabled>true</sessions-enabled>

24
2017-09-05 18:09



Nein, du solltest nicht deine eigenen rollen.

Die Sitzungs-ID muss kryptographisch zufällig sein (nicht aus bekannten Quellen zu erraten sein). Es ist schwierig, das selbst richtig zu machen.


2
2017-09-05 00:50



Idealerweise sollten Sie sich auf die Sitzungsverwaltungsfunktionen des zugrunde liegenden Frameworks verlassen. Servlets & JSPs, Struts und Spring haben diese Unterstützung, die Sie verwenden sollten.

In dem extrem seltenen Fall, dass Sie Ihr eigenes Framework schreiben, auf dem keine zugrunde liegenden Sitzungsverwaltungsfunktionen basieren, können Sie mit der Klasse java.security.SecureRandom beginnen. Natürlich, erfinden Sie das Rad hier nicht neu, denn eine unterbrochene Sitzungsverwaltung ist dasselbe wie eine fehlerhafte Authentifizierung.

Aktualisieren

Da Sie Google App Engine verwenden, sollten Sie sich auf die Funktionen zur Sitzungsverwaltung verlassen, die von der Engine bereitgestellt werden. Es scheint, dass es nicht standardmäßig aktiviert ist.


1
2017-09-05 01:02