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

📄 loginfilter.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
字号:
package org.roller.presentation.filters;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.roller.config.RollerConfig;import org.roller.model.UserManager;import org.roller.pojos.UserData;import org.roller.presentation.util.RequestUtil;import org.roller.presentation.RollerRequest;import org.roller.util.Utilities;/** * <p>Intercepts Login requests for "Remember Me" functionality.</p> * * @author Matt Raible * @version $Revision: 1.4 $ $Date: 2005/05/17 20:30:16 $ * * @web.filter display-name="Login Filter" name="loginFilter" * @web.filter-init-param name="enabled" value="true" */public final class LoginFilter implements Filter {    //~ Instance fields ========================================================    private Log mLogger = LogFactory.getLog(LoginFilter.class);    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, RollerRequest.LOGIN_COOKIE);        try         {            RollerRequest rreq = RollerRequest.getRollerRequest(request);            UserManager mgr = rreq.getRoller().getUserManager();                            // Check to see if the user is logging out, if so, remove all            // login cookies            if (request.getRequestURL().indexOf("logout") != -1)             {                if (mLogger.isDebugEnabled())                 {                    mLogger.debug("logging out '" + request.getRemoteUser() + "'");                }                    mgr.removeLoginCookies(request.getRemoteUser());                rreq.getRoller().commit();                RequestUtil.deleteCookie(response, c, request.getContextPath());            }             else if (c != null && enabled)             {                String loginCookie = mgr.checkLoginCookie(c.getValue());                rreq.getRoller().commit();                if (loginCookie != null)                 {                    RequestUtil.setCookie(response, RollerRequest.LOGIN_COOKIE,                                          loginCookie,                                          request.getContextPath());                    loginCookie = Utilities.decodeString(loginCookie);                    String[] value = StringUtils.split(loginCookie, '|');                    UserData user = mgr.getUser( value[0] );                    // authenticate user without displaying login page                    String route = "/auth?j_username=" +                                   user.getUserName() + "&j_password=" +                                   user.getPassword();                    request.setAttribute("encrypt", "false");                    request.getSession().setAttribute("cookieLogin", "true");                    if (mLogger.isDebugEnabled())                     {                        mLogger.debug("I remember you '" + user.getUserName() +                                  "', attempting to authenticate...");                    }                    RequestDispatcher dispatcher =                        request.getRequestDispatcher(route);                    dispatcher.forward(request, response);                    return;                }            }                        } catch (Exception e)         {            // no big deal if cookie-based authentication fails            mLogger.warn(e.getMessage());        }        chain.doFilter(req, resp);    }    /**     * Initialize controller values of filter.     */    public void init(FilterConfig config)     {        mLogger.debug("Initializing Login Filter");                String param = RollerConfig.getProperty("loginfilter.rememberme.enabled");        enabled = Boolean.valueOf(param).booleanValue();        mLogger.info("Remember Me enabled: " + enabled);        config.getServletContext().setAttribute("rememberMeEnabled", param);    }    /**     * destroy any instance values other than config *     */    public void destroy() {    }}

⌨️ 快捷键说明

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