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

📄 loginfilter.java

📁 appfuse其他人不需帐号就可自由下载此源码
💻 JAVA
字号:
package org.appfuse.webapp.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.appfuse.Constants;import org.appfuse.model.User;import org.appfuse.service.UserManager;import org.appfuse.util.StringUtil;import org.appfuse.webapp.util.RequestUtil;import org.springframework.web.context.WebApplicationContext;/** * <p>Intercepts Login requests for "Remember Me" functionality.</p> * * <p> * <a href="LoginFilter.java.html"><i>View Source</i></a> * </p> * * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a> * @version $Revision: 1.13 $ $Date: 2005/03/23 19:00:38 $ * * @web.filter display-name="Login Filter" name="loginFilter" * @web.filter-init-param name="enabled" value="${rememberMe.enabled}" */public final class LoginFilter implements Filter {    //~ Instance fields ========================================================    private transient final Log log = LogFactory.getLog(LoginFilter.class);    private FilterConfig config = null;    private boolean enabled = true;    //~ Methods ================================================================    public void doFilter(ServletRequest req, ServletResponse resp,                         FilterChain chain)                  throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;        HttpServletResponse response = (HttpServletResponse) resp;        // See if the user has a remember me cookie        Cookie c = RequestUtil.getCookie(request, Constants.LOGIN_COOKIE);        WebApplicationContext context =            (WebApplicationContext) config.getServletContext().getAttribute            (WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);        UserManager mgr = (UserManager) context.getBean("userManager");        // Check to see if the user is logging out, if so, remove all        // login cookies        if (request.getRequestURI().indexOf("logout") != -1 &&                request.getRemoteUser() != null) {            // make sure user's session hasn't timed out            if (request.getRemoteUser() != null) {                if (log.isDebugEnabled()) {                    log.debug("logging out '" + request.getRemoteUser() + "'");                }                mgr.removeLoginCookies(request.getRemoteUser());                RequestUtil.deleteCookie(response, c, request.getContextPath());                request.getSession().invalidate();            }        } else if (c != null && enabled) {            String loginCookie = mgr.checkLoginCookie(c.getValue());            if (loginCookie != null) {                RequestUtil.setCookie(response, Constants.LOGIN_COOKIE,                                      loginCookie,                                      request.getContextPath());                loginCookie = StringUtil.decodeString(loginCookie);                String[] value = StringUtils.split(loginCookie, '|');                User user = mgr.getUser(value[0]);                // authenticate user without displaying login page                String route = "/authorize?j_username=" +                               user.getUsername() + "&j_password=" +                               user.getPassword();                request.setAttribute("encrypt", "false");                request.getSession(true).setAttribute("cookieLogin",                                                      "true");                if (log.isDebugEnabled()) {                    log.debug("I remember you '" + user.getUsername() +                              "', attempting to authenticate...");                }                RequestDispatcher dispatcher =                    request.getRequestDispatcher(route);                dispatcher.forward(request, response);                return;            }        }        chain.doFilter(req, resp);    }    /**     * Initialize controller values of filter.     */    public void init(FilterConfig config) {        this.config = config;        String param = config.getInitParameter("enabled");        enabled = Boolean.valueOf(param).booleanValue();        if (log.isDebugEnabled()) {            log.debug("Remember Me enabled: " + enabled);        }        config.getServletContext()              .setAttribute("rememberMeEnabled",                            config.getInitParameter("enabled"));    }    /**     * destroy any instance values other than config *     */    public void destroy() {    }}

⌨️ 快捷键说明

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