Verwaltung-Sitzung explizit in Java-servlet zur sicheren web-Anwendung
Ich bin die Entwicklung einer sicheren web-Anwendung. Ich habe zu entwickeln, die ein servlet zur benutzerdefinierten Steuerung der access.
Zum Beispiel habe ich zu Hause.jsp weit offen, ein Inhalt.jsp auf, die abhängig von URL-Muster.
Wenn es von Inhalten.jsp, es sollte breit öffnen Sie zum anzeigen der Liste der Inhalte.
Wenn Sie den Inhalt.jsp?Kapitel=1&detail=true, sollte es prüfen, ob der Benutzer angemeldet ist oder nicht, nur wenn die Benutzer den richtigen Zugriff, dann wird es eine Berechtigung, ansonsten leitet es um logon-Seite.
Ich bin verwirrt mit JSESSIONID management in Java. Standardmäßig hat jede JSP wird automatisch erstellen Sie eine Sitzung, wenn niemand da ist. Ich verstehe, dass ich kann verwenden @page session="false" überschrieben sein Standardverhalten.
So, ich denke, die Logik wird so sein
-
Wenn der Benutzer (nicht angemeldet) noch nach Hause KOMMEN.jsp, sollte ich nicht schaffen, jede Sitzung in der servlet. Aber JSP sollte erstellen. Ich fand im HTTP-request-header, es hat JSESSIONID Wert gesendet. Allerdings, wie kommen Sie auf die server-Seite, ich werde nicht jede Sitzung wieder über httpServletRequest.getSession(false)?
-
Wenn der Nutzer will, um Inhalte.jsp?Kapitel=1&detail=true, werde ich leiten es an die Anmeldung.jsp. Nach der Anmeldung Formular abgeschickt wird, sollte ich eine neue Sitzung auf der server-Seite (vor dem return) mit Hilfe des httpServletRequest.getSession(true)? Wird einer der folgenden JSP-Seite zugreifen, erstellen Sie eine neue session?
-
Wenn der Benutzer sich ausloggt, habe ich zu nennen Sitzung.invalidate() es ungültig ist. Jedoch, wird jede folgende JSP-Seite wird eine neue session-id?
Ich bin nur verwirrt von
When should I call getSession(true) and getSession(false)? I assume per user session, I should call getSession(true) once.
Which session id should I use (trust) to identify if the user is truly logged on?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sitzung und access control nicht viel gemeinsam haben. Ein nicht authentifizierter Benutzer kann eine Sitzung. Es kann nützlich sein, nur zum speichern von Einstellungen, zum Beispiel.
Einmal authentifiziert haben, können Sie immer die gleiche session, aber speichern Sie die Identität des Nutzers und seine Berechtigungen in der session. Sie sollten nur sehen, die Sitzung als einen Ort zum speichern von Parametern für einen bestimmten Benutzer, für die Dauer Ihrer Sitzung mit Ihrer webapp.
Fortsetzen, das Vorhandensein einer Sitzung bedeutet nicht, dass ein Benutzer authentifiziert ist. Die Anwesenheit von einigen "authentifiziert" Flagge oder eine Identität in der Sitzung, dass der Authentifizierungs-Mechanismus speichert in der session, ist das, was Sie überprüfen müssen, um zu wissen, ob ein Benutzer authentifiziert ist.
Dies funktioniert gut
Hause.jsp
Kontakt.jsp
Nur tun die gleiche Sache hier wie
1 -, wenn nicht in der Sitzung, die Umleitung von zu Hause.jsp
2 -, wenn in der Sitzung aber
session.getAttribute("authorized")
gibtnull
dann auch die Umleitung zu Hause.jsp3 -, wenn in der Sitzung und
session.getAttribute("authorized")
gibt den Wert"yes"
, dannerlauben Sie zu Kontaktieren.jsp
wenn die Protokolle aus
Aber Sie stellen ein problem. Wenn Sie auf den Kontakt.jsp und klickt auf den back-button des browser, werden Sie
sehen Sie die home.jsp-ich.e die login-Seite ODER, wenn Sie sich angemeldet haben, aus-und Abmelden.jsp und klickt auf den zurück
button des Browsers, sehen Sie Kontakt an.jsp. Um diese zu vermeiden, müssen Sie diese 3 Zeilen in jeder Seite
wo Sie wollen, um access control.in Ihrem Fall das Haus.jsp und Kontakt.jsp
ERSTELLEN EINE LOGIN-ANWENDUNG MIT SESSION MIT SERVLET finden Sie unter diesem Beitrag und machen einfach Praktika--genießen Sie das Programm
http://expertlogica.blogspot.in/2014/06/create-login-application-using-session.html