public class ForumFilter implements Filter { private static final String[] UNLOGIN_URIS = {"/index.jsp","/index.do","/login.jsp","/login/doLogin.do","/register.jsp", "/register.do","/board/listBoardTopics-","/board/listTopicPosts-"}; public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; User user = getSessionUser(request); if (user==null && !isURILogin(request.getRequestURI(),request)){ String toUrl = request.getRequestURI(); if (!StringUtils.isEmpty(request.getQueryString())){ toUrl += "?" + request.getQueryString(); } request.getSession().setAttribute(Define.LOGIN_TO_URL,toUrl); request.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse); return; } filterChain.doFilter(servletRequest,servletResponse); } } protected User getSessionUser(HttpServletRequest request) { return (User) request.getSession().getAttribute(Define.UserLine); } public void destroy() { } protected boolean isURILogin(String requestURI,HttpServletRequest request){ if (request.getContextPath().equalsIgnoreCase(requestURI) || (request.getContextPath() + "/").equalsIgnoreCase(requestURI)) return true; for (String uri : UNLOGIN_URIS) { if (requestURI != null && requestURI.indexOf(uri) >= 0) { return true; } } return false; } }
实现Filter接口,重写doFilter方法。
目前成都创新互联已为近千家的企业提供了网站建设、域名、网页空间、网站改版维护、企业网站设计、华龙网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。将ServletRequest转成HttpServletRequest并且获取session中的用户。
如果存在用户或者访问的url是可以不登入就可访问的,即已经登入成功了,那就直接doFilter();
如果不存在,那就保存当前要访问的url,然后跳转到登入界面,如果登入成功再跳回此url。
在一些应用中,未登录用户请求了必须登录的资源时,提示用户登录,此时要记住用户访问的当前页面的URL,当他登录成功后根据记住的URL跳回用户最后访问的页面:
String lastAccessUrl = request.getRequestURI() + "?" + request.getQueryString();
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。