⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 authcheckfilter.java

📁 基于Jabber协议的即时消息服务器
💻 JAVA
字号:
/** * $RCSfile$ * $Revision: 4016 $ * $Date: 2006-06-18 14:12:04 -0700 (Sun, 18 Jun 2006) $ * * Copyright (C) 2004 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. */package org.jivesoftware.admin;import org.jivesoftware.util.ConcurrentHashSet;import org.jivesoftware.util.Log;import org.jivesoftware.util.WebManager;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.net.URLEncoder;import java.util.Set;import java.util.StringTokenizer;/** * A simple filter which checks for the auth token in the user's session. If it's not there * the filter will redirect to the login page. */public class AuthCheckFilter implements Filter {    private static Set<String> excludes = new ConcurrentHashSet<String>();    private ServletContext context;    private String defaultLoginPage;    /**     * Adds a new string that when present in the requested URL will skip     * the "is logged" checking.     *     * @param exclude the string to exclude.     */    public static void addExclude(String exclude) {        excludes.add(exclude);    }    /**     * Removes a string that when present in the requested URL will skip     * the "is logged" checking.     *     * @param exclude the string that was being excluded.     */    public static void removeExclude(String exclude) {        excludes.remove(exclude);    }    public void init(FilterConfig config) throws ServletException {        context = config.getServletContext();        defaultLoginPage = config.getInitParameter("defaultLoginPage");        String excludesProp = config.getInitParameter("excludes");        if (excludesProp != null) {            StringTokenizer tokenizer = new StringTokenizer(excludesProp, ",");            while (tokenizer.hasMoreTokens()) {                String tok = tokenizer.nextToken().trim();                excludes.add(tok);            }        }    }    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)            throws IOException, ServletException    {        HttpServletRequest request = (HttpServletRequest)req;        HttpServletResponse response = (HttpServletResponse)res;        // Reset the defaultLoginPage variable        String loginPage = defaultLoginPage;        if (loginPage == null) {            loginPage = request.getContextPath() + "/login.jsp";        }        // Get the page we're on:        String url = request.getRequestURL().toString();        // See if it's contained in the exclude list. If so, skip filter execution        boolean doExclude = false;        for (String exclude : excludes) {            if (url.indexOf(exclude) > -1) {                doExclude = true;                break;            }        }        if (!doExclude) {            WebManager manager = new WebManager();            manager.init(request, response, request.getSession(), context);            if (manager.getUser() == null) {                response.sendRedirect(getRedirectURL(request, loginPage, null));                return;            }        }        chain.doFilter(req, res);    }    public void destroy() {    }    private String getRedirectURL(HttpServletRequest request, String loginPage,            String optionalParams)    {        StringBuilder buf = new StringBuilder();        try {            buf.append(request.getRequestURI());            String qs = request.getQueryString();            if (qs != null) {                buf.append("?").append(qs);            }        }        catch (Exception e) {            Log.error(e);        }        try {            return loginPage + "?url=" + URLEncoder.encode(buf.toString(), "ISO-8859-1")                    + (optionalParams != null ? "&"+optionalParams : "");        }        catch (Exception e) {            Log.error(e);            return null;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -