Monday, September 15, 2008

1. public class AcegiAjaxFilter extends OncePerRequestFilter {
2.
3. protected void doFilterInternal(HttpServletRequest request,
4. HttpServletResponse response,
5. FilterChain filterChain) throws ServletException, IOException {
6.
7. if (!isAjaxRequest(request)) {
8. filterChain.doFilter(request, response);
9. return;
10. }
11.
12. RedirectResponseWrapper redirectResponseWrapper = new RedirectResponseWrapper(response);
13.
14. filterChain.doFilter(request, redirectResponseWrapper);
15.
16. if (redirectResponseWrapper.getRedirect() != null) {
17. request.setCharacterEncoding("UTF-8");
18. response.setContentType("text/plain;charset=utf-8");
19.
20. response.setHeader("Cache-Control", "no-cache");
21. response.setDateHeader("Expires", 0);
22. response.setHeader("Pragma", "no-cache");
23.
24.
25. String redirectURL = redirectResponseWrapper.getRedirect();
26. String content;
27. if (redirectURL.indexOf("login_error=1") == -1) {
28. content = "url:" + redirectURL;
29. } else {
30. content = "error:" + ((AuthenticationException) request.
31. getSession().getAttribute(AbstractProcessingFilter.ACEGI_SECURITY_LAST_EXCEPTION_KEY)).getMessage();
32. }
33. response.getOutputStream().write(content.getBytes("UTF-8"));
34. }
35. }
36.
37.
38. private boolean isAjaxRequest(HttpServletRequest request) {
39. return request.getParameter("ajax") != null;
40. }
41. }

No comments: