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

📄 aclfilter.java

📁 Chinaxp 论坛源代码
💻 JAVA
字号:
/* * XP Forum *	 * Copyright (c) 2002-2003 RedSoft Group.  All rights reserved. * */package org.redsoft.forum.filters;import java.io.IOException;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.security.auth.Subject;import org.redsoft.forum.ForumConstants;import org.redsoft.forum.dao.AclDAO;import org.redsoft.forum.dao.xml.AclDAOxml;/** * <p>Filter that guarantee the protected web resources can only accessed * by a logined user. *  * When a user requests a protected page, filter checks whether the user is * logined on. If the user is logined on, the protected resource is served. * If the user is not logined, filter save the requested URL(for use after * logined on) and then redirects the request to the logon page. *  * The protected web resources configuration are stored in  * /WEB-INF/acl-config.xml</p> *  * @@author <a href="mailto:chjxm@msn.com">cinc</a> * * @@version $Id: AclFilter.java,v 1.1.1.1 2004/02/04 03:52:12 mustang Exp $ */public class AclFilter implements Filter {    /**     * The filter configuration object we are associated with.  If this value     * is null, this filter instance is not currently configured.     */    FilterConfig config;    /**     * Acl DAO, responsible for reading acl configuration from file     */    AclDAO aclDAO;        /**     * Use acl-config.xml to store web pages that can only be viewed by      * logined user.     * For every web resource, if it is a protected resource, check if     * the user has been logined, if not, save corrent page to session,     * forward to logon page     *     * @param request The servlet request we are processing     * @param result The servlet response we are creating     * @param chain The filter chain we are processing     *     * @exception IOException if an input/output error occurs     * @exception ServletException if a servlet error occurs     */    public void doFilter(ServletRequest request, ServletResponse response,                         FilterChain chain)	throws IOException, ServletException {        // get Request URI        HttpServletRequest hreq = (HttpServletRequest)request;		String requestUri = hreq.getRequestURI();        String uri = null;        int secondSlash = requestUri.indexOf("/", 1);        if (secondSlash != -1){            uri = requestUri.substring(secondSlash+1, requestUri.length());            if (aclDAO.isProtectedResource(uri)){        		// Get the user from session	        	final Subject subject		        	=(Subject)hreq.getSession().getAttribute( ForumConstants.USER_KEY );                // if user is null, user is not loged in, forward to logon page                if (subject == null){                    //System.out.println ("not loged on, will redirect to logon page");                    String url = "/" + uri + "?" + hreq.getQueryString();    		    	hreq.setAttribute( ForumConstants.DEST_URL, url );                    config.getServletContext().getRequestDispatcher("/logon.jsp").forward(request, response);                    return;                }            }        }    	// Pass control on to the next filter        chain.doFilter(request, response);    }    /**     * Place this filter into service.     * Read acl configuration from file     *     * @param filterConfig The filter configuration object     */    public void init(FilterConfig filterConfig) throws ServletException {        config = filterConfig;        ServletContext context = filterConfig.getServletContext();        aclDAO = new AclDAOxml(context.getRealPath(ForumConstants.ACL_CONFIG_FILE));    }    /**     * Take this filter out of service.     */    public void destroy() {        config = null;        aclDAO = null;    }}

⌨️ 快捷键说明

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