HTTP Servlets und Cookies

Guarana

Mitglied
Hallo liebe Java-forum.org Gemeinde!

Ich bin der neue hier, werde euch wohl ab heute öfter besuchen kommen :)

Kommen wir zum Thema:
Ich bin gerade dabei ein Javaservlet zu schreiben. Diese ließt via eines Formactions User-
name und Passwort ein, verbindet sich dann über JDBC zu einer DB2 und vergleicht dann
die Daten. Soweit so gut. Nun möchte ich die Seite /landing nur für previligierte Benutzer
zugänglich machen. Wie kann ich das anstellen?
Ich setze bereits einen Cookie im Client nur jetzt sollen nur Leute mit einem geeignetem
Cookie Zugriff auf /landing bekommen.

Java:
//Create new instance of cookie and save user name + password in there.
Cookie keks = new Cookie(logInUser, logInPass);
response.addCookie(keks);

So setze ich den Cookie. Nur wie sieht das Pendant auf der /landing Seite aus.

Liebe Grüße,
Guarana
 

homer65

Top Contributor
Statt Cookies direkt zu verwenden kannst du Daten in die SESSION schreiben und diese auslesen.
Code:
 session.setAttribute("NameDesObjekt",objekt);
 Object objekt = session.getAttribute("NameDesObjekt");
 

homer65

Top Contributor
z.B.:
Code:
  String isPrivUser = (String) session.getAttribute("isPrivUser");
  if (isPrivUser != null)
  {
    // Code für Privilegierten User
  }
  else
 {
   // Andernfalls könnte man eine Fehlerseite anzeigen
 }
 

Niki

Top Contributor
am besten löst du das ganze über JAAS. schnell erklärt: du hast eine user - rollen zuordnung. deine URLs kannst du dann nur für bestimmte rollen zulassen. das angenehme ist, dass das ganze handling der container übernimmt. in der web.xml kannst du auch konfigurieren auf welche seite der user kommen soll wenn er eine seite aufruft, auf die er keinen zugriff hat. (über http error)
 

Guarana

Mitglied
Hey Niki,
Ja ich soll es zur Übung aber erstmal so lösen.. :/
Und der Cast vom HttpSession in einen String schlägt fehl..

Java:
22.10.2010 14:33:39 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet landing threw exception
java.lang.ClassCastException: org.apache.catalina.session.StandardSessionFacade cannot be cast to java.lang.String
	at main.landing.doGet(landing.java:32)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
 

homer65

Top Contributor
Der Cast klappt auch nur, wenn du vorher einen String und nichts anderes in die Session geschrieben hast.
Oder, falls du gar nichts reingeschrieben hast, bekommst du halt Null.
 

Ähnliche Java Themen


Oben