Ich schreibe gerade eine kleine dynamische Web-Anwendung in Java. Die Anwendung soll eine Ereignisplattform sein, auf der Sie ein Benutzerkonto erstellen, sich anmelden und dann alle offenen Ereignisse sehen können (in einer späteren Iteration können Benutzer diese Ereignisse erstellen/daran teilnehmen).Wie kann ich den Benutzerzugriff auf Servlets & Jsp's behandeln/einschränken?
Im Moment ist die Struktur des Web-App könnte (vereinfacht) wie folgt beschrieben:
Register-Servlet -> Register.jsp
|
V
Login-Servlet -> Login.jsp
|
V
Main-page-Servlet -> Main.jsp
So jetzt ein Benutzer auf Login.jsp, seine Login-Informationen würden gesendet gehen könnte zum Login-Servlet, das es validieren und dann an das Main-Page-Servlet senden würde. Das Main-Page-Servlet ruft dann (nach einer erneuten Validierung der Anmeldung) alle aktuellen Ereignisse aus einer Datenbank ab, hängt sie an die Anfrage an und leitet sie an die Datei Main.jsp weiter, die sie für den Benutzer anzeigt.
Wenn nun ein Benutzer direkt auf Main.jsp zugreifen möchte (ohne vom Main-Page-Servlet zu kommen), kann er natürlich die verfügbaren Ereignisse nicht anzeigen. Die Problemumgehung, die ich momentan verwende, ist eine Null-Überprüfung, um zu sehen, ob die Ereignisse dort sind, und wenn nicht, umleitung zum Main-Page-Servlet.
Es stört mich, mein Problem so zu lösen, da ich nicht denke, dass das die beste Praxis ist und ich denke, es wird nur eine Menge anderer Probleme schaffen, je größer meine Anwendung wird.
Mein erster Gedanke war, dass es nützlich wäre, wenn ich einfach alle .jsps vom Benutzer "verstecken" könnte, so dass der Benutzer nur auf Servlets landet und nicht auf die .jsps zugreifen kann .
Gibt es eine Möglichkeit, das zu tun? Oder, wenn nicht, was wäre die Best-Practice-Lösung, wenn ich eine professionelle Anwendung auf Unternehmensebene schreiben würde?
Siehe Authentifizierung und Autorisierung. Bei Servlets werden diese typischerweise mit und um die 'HttpSession' herum implementiert. –