JavaServer Pages Login

Simple Man

Lt. Commander
Registriert
Sep. 2003
Beiträge
1.420
Hallo,

Ich würde gerne einen Login mit JavaServer Pages/Servlets schreiben. Beim Login sollen der Benutzername und Passwort gegen die Datenbank gecheckt werden.
Wenn der Benutzer als ein Kunde identifiziert wird, wird er zu Kundenbereich.jsp weitergeleitet und wenn als Admin identifiziert, dann zu Admin.jsp. Es gibt 5 Admins mit verschiedenen Benutzernamen die in einer Tabelle stehen.

Wie erlaube ich denn nur den Admins auf diese Admin.jsp zuzugreifen?
PHP:
 if (session.getAttribute("username")!=null && session.getAttribute("username")!="")
hindert ja keinen Kunden daran die Admin.jsp aufzurufen.

Irgendwo muss ich ja sagen, dass eine bestimmte Session zu einem Admin gehört und jeder anderer session, die nicht dieser Admin ist, wird der Zutritt verwehrt.
 
userrole - also die Rolle steckt auch noch drin. Je nachdem, welchen Application Server du benutzt, gibt es dort schon einen eingebauten Login. So auch beim Tomcat. Den habe ich bei meinem letzten Projekt benutzt. Entweder nimmt der - per default - die Benutzer aus seiner Konfigurationsdatei (Username, Password und Rolle) oder man kann ihn dazu bringen, die Daten mit einer DB abzugleichen. Hier lassen sich Rollen definieren. So hatte ich das gemacht, wenn die Rolle des aktuellen Benutzers nicht "admin" ist, dann kein Zugriff auf die administrativen Seiten.

Leider hab ich das nicht mehr genau im Kopf und auch den link von damals:
http://www.developer.com/db/article...sed-Authorization-in-Your-Web-Application.htm

hindert ja keinen Kunden daran die Admin.jsp aufzurufen.
Naja, wenn du es so machen willst, wie beschrieben, es geht auch so: Ein fester Benutzer "Admin" - da wird abgefragt und verglichen. Das müsste dann natürlich in jede zu schützende Seite rein. Ist der Benutzer korrekt, dann zeige den Rest an, ansonsten was anderes. Da hätte der Benutzer auch eigenen keinen Einfluss drauf, solange er nicht seinen Benuzternamen ändern kann. Auf die Session kann er oder sie ja eh nicht von zu Hause aus zugreifen.
 
Zuletzt bearbeitet:
Danke für den Link. Ich benutze zwar auch Tomcat, jedoch sind auf diesem Webspace auch andere Benutzer/Applikationen und ich habe keine Adminrechte für Tomcat. Ich kann die JSP/Servlets nur hochladen.
 
Naja, du könntest eine Art Security Filter bauen. Du definierst in deinem Fall 2 Gruppen, Admin und User. Wenn ein neuer Benutzer angemeldet wird, so wird dieser automatisch als User angemeldet. Der Admin hat dann eine Liste von Usern, bei denen er die Flags ändern kann, also die in eine bestimmte Gruppe hinzufügen kann. Das könntest du z.b. über eine Property lösen im Sinne einer BlackList oder Whitelist, je nachdem wie du das gern hättest. Ich hatte mal ein ähnliches Problem. Es ging bei mir um das Ausblenden bestimmer divs, sofern ein User nicht in einer bestimmten Gruppe war. Die einzelnen divs hab ich eine Whitelist gepackt und einen FieldSecurityFilter hinzugepackt.

Die Variante von CoolHandLuke hört sich aber auch interessant an... Hast du keine Möglichkeit an die config vom Tomcat zu kommen? - Das wäre meiner Meinung nach in diesem Fall die weniger aufwändige Lösung.
 
Nein, leider kein Zugriff, da dort wahrscheinlich noch 50 andere User da sind.

Ich versuche mal einfach ein weiteres Attribut bei einer Session zu setzen, wo die Anmeldung als Admin identifiziert wird.

if(username==admin)
session.setAttribute("status","admin");

muss dann auf jeder Adminseite checken ob "status" eben nicht null ist.

Können da irgendwelche Probleme auftauchen?



Gibt es denn nicht irgendwie eine triviale Lösung die mit wenig sourcecode und ohne irgendwelche tools geht?
 
eigentlich nicht, da Benutzer keinen Zugriff auf die serverseitigen Sessions haben. Bedenke aber, dass, solange du kein https verwendest, Passwörter unverschlüsselt übertragen werden.
 

Ähnliche Themen

C
Antworten
6
Aufrufe
1.025
Zurück
Oben