Umleitung der web-client von einem servlet-filter (client-server-Verbindung über AJAX)

Mache ich ein web mit JAASRealm Authentifizierung (tomcat 7).
Dies ist ein filter für die servlets:

private String loginPage = "welcome.jsp";

@Override
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain filterChain) throws IOException, ServletException {

    if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        if (httpServletRequest.getUserPrincipal() == null) {
            //User is not logged in, redirect to login page.
            httpServletRequest.setAttribute("from", httpServletRequest.getRequestURI());
            httpServletResponse.sendRedirect(loginPage);
        }
        else {
            filterChain.doFilter(request, response);
        }
    }
}

Und ich habe erklärt es in web.xml

<filter>
    <filter-name>login-filter</filter-name>
    <filter-class>LoginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>login-filter</filter-name>
    <url-pattern>/sampleServlet</url-pattern>
</filter-mapping>

Mein problem ist, wenn ich mich nicht authentifiziert sind, und rufe ich das servlet über AJAX, diese Linie der filter funktioniert nicht

httpServletResponse.sendRedirect(loginPage);

So, ich habe nicht erhalten alle Daten, und ich werde nicht weitergeleitet auf die Login-Seite. Was kann ich tun in diesem Fall?

  • Können Sie uns zeigen Sie Ihre AJAX-request? Ich glaube, ich weiß, was dein problem ist, aber können nicht sicher sein, bis ich sehe, dass code. Ich denke, dass es hat zu tun mit dem content-type der Anfrage.
InformationsquelleAutor Jon Ander | 2011-07-15
Schreibe einen Kommentar