Hi
Ich mache gerade meine ersten Gehversuche mit JSP und Tomcat.
Ich habe gerade einen ServletFilter geschrieben, der für jeden Request auf einen Unterbereich "user" prüfen soll ob der Benutzer angemeldet ist und wenn nicht einen statuscode 401 zurückgibt.Das funktioniert auch soweit.Ebenfalls habe ich eine Errorpage 401.jsp erzeugt die auf eine 401 Fehlermeldung reagiert.Diese funktioniert leider nicht.
Hier der Deployment Deskriptor:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>S2DashboardDesktopBackEnd</display-name>
<filter>
<filter-name>UserFilter</filter-name>
<filter-class>filters.UserFilter</filter-class>
<init-param>
<param-name>log_category</param-name>
<param-value>DurationLog</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UserFilter</filter-name>
<url-pattern>/user/*</url-pattern>
</filter-mapping>
<error-page>
<error-code>401</error-code>
<location>/errorPages/401.jsp</location>
</error-page>
</web-app>
[/XML]
Hier der Filter:
Ich mache gerade meine ersten Gehversuche mit JSP und Tomcat.
Ich habe gerade einen ServletFilter geschrieben, der für jeden Request auf einen Unterbereich "user" prüfen soll ob der Benutzer angemeldet ist und wenn nicht einen statuscode 401 zurückgibt.Das funktioniert auch soweit.Ebenfalls habe ich eine Errorpage 401.jsp erzeugt die auf eine 401 Fehlermeldung reagiert.Diese funktioniert leider nicht.
Hier der Deployment Deskriptor:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>S2DashboardDesktopBackEnd</display-name>
<filter>
<filter-name>UserFilter</filter-name>
<filter-class>filters.UserFilter</filter-class>
<init-param>
<param-name>log_category</param-name>
<param-value>DurationLog</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UserFilter</filter-name>
<url-pattern>/user/*</url-pattern>
</filter-mapping>
<error-page>
<error-code>401</error-code>
<location>/errorPages/401.jsp</location>
</error-page>
</web-app>
[/XML]
Hier der Filter:
Java:
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class UserFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = ((HttpServletResponse) response);
HttpSession currentSession = httpRequest.getSession();
if(currentSession.getAttribute("username") == null || currentSession.getAttribute("password") == null){
httpResponse.setStatus(401);
}
else{
chain.doFilter(httpRequest, httpResponse);
}
}
public void destroy() {
}
}