1 25 26 package net.killingar.forum.filter; 27 28 import net.killingar.forum.internal.managers.ForumManager; 29 30 import javax.servlet.*; 31 import javax.servlet.http.HttpServletRequest ; 32 import javax.servlet.http.HttpServletResponse ; 33 import javax.servlet.http.HttpSession ; 34 35 public class LoginFilter implements Filter 36 { 37 private FilterConfig filterConfig; 38 39 public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain) throws java.io.IOException , javax.servlet.ServletException 40 { 41 HttpServletRequest httpRequest = (HttpServletRequest )request; 43 HttpSession session = httpRequest.getSession(true); 44 45 ForumManager manager; 46 synchronized(session) 47 { 48 manager = (ForumManager)session.getAttribute("manager"); 49 if (manager == null) 50 { 51 try 52 { 53 manager = new ForumManager(); 54 session.setAttribute("manager", manager); 55 } 56 catch (Exception e) 57 { 58 throw new ServletException("Exception when creating ForumManager: "+e); 59 } 60 } 61 } 62 63 if (!manager.isLoggedIn()) 65 { 66 if (httpRequest.getRequestURI().indexOf("/public/") == -1 && httpRequest.getRequestURI().indexOf("/img/") == -1) 67 { 68 String url = httpRequest.getRequestURI(); 69 70 if (url.equals("/index.jsp")) 71 url = "/"; 72 73 String params = httpRequest.getQueryString(); 74 if (params != null) 75 url += "?"+params; 76 77 ((HttpServletResponse )response).sendRedirect(httpRequest.getContextPath()+"/public/Login.action?url="+java.net.URLEncoder.encode(url)); 78 return; 79 } 80 } 81 82 chain.doFilter(request, response); 83 } 84 85 public void setFilterConfig(final FilterConfig filterConfig) 86 { 87 this.filterConfig = filterConfig; 88 } 89 90 public FilterConfig getFilterConfig() 91 { 92 return filterConfig; 93 } 94 95 public void init(FilterConfig filterConfig) 96 { 97 } 98 99 public void destroy() 100 { 101 } 102 } 103 104 105 | Popular Tags |