login4j



import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;


/**
 * Servlet Filter implementation class LoginFilter
 */
public class LoginFilter implements Filter {

    private static final String EXCEPT_URL = "EXCEPT_URL";
    private String exceptUrl = null;

    /**
     * Default constructor.
     */
    public LoginFilter() {
    }

    /**
     * @see Filter#destroy()
     */
    public void destroy() {
    }

    /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        String url=request.getRequestURI();
        
        if (!request.getRequestURI().matches(exceptUrl) && !isLogin(request)) {
            //response.addHeader(arg0, arg1);
                processSessionTimeout(request, response);
                return;
        }
        chain.doFilter(req, res);
    }

    /**
     * @param request
     * @param response
     * @throws IOException
     * @throws ServletException
     */
    private void processSessionTimeout(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        if (isAjaxRequest(request) ) {
            response.setHeader("sessionstatus","timeout");
        } else {
            response.setContentType("text/html");
            response.getWriter().write("<script type='text/javascript'>alert('登录超时,请重新登录!');window.parent.location.href='"+Global.getConfig("login.url")+"';</script>");
//            response.sendRedirect(ConfigUtils.get("login.url"));
        }
    }
    
    /**
     * @param request
     * @return
     */
    private boolean isLogin(HttpServletRequest request) {
        HttpSession session = request.getSession();
        return null != session.getAttribute("employee");
    }
    
    /**
     * @param request
     * @return
     */
    private  boolean isAjaxRequest(HttpServletRequest request) {
        return StringUtils.isNotEmpty(request.getHeader("x-requested-with")) &&
                StringUtils.equalsIgnoreCase(request.getHeader("x-requested-with"), "XMLHttpRequest");
    }

    /**
     *
     * @see Filter#init(FilterConfig)
     */
    public void init(FilterConfig fConfig) throws ServletException {
        //exceptUrl = "^".concat(fConfig.getServletContext().getContextPath()).concat(StringUtils.defaultIfEmpty(fConfig.getInitParameter(EXCEPT_URL), ""));
        exceptUrl = fConfig.getInitParameter(EXCEPT_URL);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值