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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie sende ich re-leitet Sie bei der Filterung von AJAX-Anfragen...
AJAX-Code (jQuery)
Entsprechenden Filter Code
Ich habe versucht, einige elegante Lösung, aber keiner arbeitete. Ich fand diese ein, aßen primefaces forum, und arbeitete auch auf einer reinen JSF-Anwendung.
Habe ich eine Web-Filter:
Ich das problem gelöst, aber nicht so, wie ich möchte.
Ich benutze in der servler-filter diese Zeile
- und im-client, mit dem ajax-request, das ich capture mit diesem status und dann Mach ich die Umleitung
Aber tun Sie es mit so ist der Kunde, funktioniert der redirect von einer Seite, und ich möchte es vom server, nicht vom client.