# Einfaches Filter-Servlet für Benutzer-Validierung



## Amenophis (28. Okt 2008)

Hallo zusammen,

ich habe folgendes Problem:

Für eine kleine Web-Applikation möchte ich bestimmte Seiten mittels einem Filter-Servlets vor unbefugten Zugriff schützen. Beim Login schreibe ich einen neuen Wert in die Session und lese hinterher im Servlet diesen Wert wieder aus.

Login-Servlet


```
request.getSession().setAttribute("authUser", "login");
```

Filter-Servlet


```
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;  
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        String tmp = "leer";
        tmp = (String) httpRequest.getSession().getAttribute("authUser");
        if (tmp.equals("login")){
        	httpResponse.sendRedirect("index.jsp");
        } else {
        	chain.doFilter(request, response);
        }
	}
```

unverständlicherweise bekomme ich jedesmal eine "java.lang.NullPointerException" für die Zeile:

```
if (tmp.equals("login")){
```


Könnt ihr mir einen guten Tip geben oder mir eine bessere Möglichkeit sagen, wie ich ine Validirung hinbekomme? 


Gruß,

Amenophis


----------



## maki (28. Okt 2008)

Offensichtlich ist tmp null.

Solche Vergleiche kann man übrigens auch so formulieren, um die NPE zu vermeiden:

```
"login".equals(tmp)
```


----------



## Amenophis (29. Okt 2008)

> Offensichtlich ist tmp null.



Meistens nicht, aber wenn ein Benutzer eine URL aufruft und die Session abgelaufen ist, kommt es zu einem Abbruch der Applikation und der "tollen" Fehlermeldung. Sieht ncht so schön aus   



> Solche Vergleiche kann man übrigens auch so formulieren, um die NPE zu vermeiden:  Code:
> 
> 1 "login".equals(tmp)



Wusste gar nicht, dass das funktioniert  :wink: Ind klappte auch!

Dank dir!


----------



## HLX (29. Okt 2008)

Amenophis hat gesagt.:
			
		

> Meistens nicht, aber wenn ein Benutzer eine URL aufruft und die Session abgelaufen ist, kommt es zu einem Abbruch der Applikation und der "tollen" Fehlermeldung.


Was ja durchaus nachvollziehbar ist, da das Session-Objekt nicht mehr existiert und vom Tomcat ein neues angelegt wird.

Daher ist besser:

```
String user = (String) httpRequest.getSession().getAttribute("authUser");
if(user == null) {
     // Weiterleitung zur Login-Seite
}
else {
    // normal weitermachen
}
```


----------

