用户登录过滤器

在web.xml中

    <filter>
        <filter-name>loginFilter</filter-name>
        <filter-class>xxxxx.filters.LoginFilter</filter-class>
        <init-param>
            <param-name>indexPath</param-name>
            <param-value>/welcome.htm</param-value>
        </init-param>
        <init-param>
            <param-name>ignoreList</param-name>
            <param-value></param-value>
        </init-param>
    </filter>


public class LoginFilter implements Filter {
    
    private static final Logger log = LogManager.getLogger(LoginFilter.class);
    
    private String indexPath;
    List<String> ignoreList = new ArrayList<String>();
    
    public void destroy() {
        
    }

    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest)arg0;
        HttpServletResponse res = (HttpServletResponse) arg1;
        String uri = req.getRequestURI();
        if(log.isDebugEnabled()) {
            log.debug(uri);
        }
        if (req.getSession().getAttribute(AbstractController.SESSION_LOGIN_INFO) != null || isIgnored(uri)) {
            chain.doFilter(req, res);
        } else {
            String referer = req.getHeader("referer");
            if(referer==null)
                referer = "";
            log.warn(String.format("Not yet authenticated, The request uri is [%s]. referer is [%s].",
                    uri, referer));
            res.sendRedirect(req.getContextPath() + indexPath);
        }
    }

    public void init(FilterConfig config) throws ServletException {
        indexPath = config.getInitParameter("indexPath");
        String strIgnoreList = config.getInitParameter("ignoreList");
        if(strIgnoreList!=null && strIgnoreList.length()>0) {
            ignoreList = Arrays.asList(strIgnoreList.split(","));
        } else {
            ignoreList = new ArrayList<String>();
        }
    }

    private boolean isIgnored(String uri) {
        for (String ignore : ignoreList) {
            if (StringUtils.contains(uri, ignore)) {
                return true;
            }
        }
        return false;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值