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

📄 checkloginfilter.java

📁 wmoa办公自动化系统 小型的JAVA项目 功能包括审批流 消息发布等
💻 JAVA
字号:
package com.dudu.moa.commons;

import java.io.IOException;
import java.util.Enumeration;

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.log4j.Logger;

import com.dudu.moa.domain.sys.User;

/**
 * 判断用户是否登录的过滤器
 * 
 * @author <a href="mailto:denglq@wanwei.com.cn">邓利强</a>
 * @version 1.0
 */
public class CheckLoginFilter implements Filter {

	private Logger log = Logger.getLogger(getClass().getName());

	public FilterConfig config = null;

	public void init(FilterConfig config) throws ServletException {
		this.config = config;
		log.info("Initializing filter 'encodingFilter'");
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
			ServletException {
		isMobile((HttpServletRequest) request);

		HttpSession session = ((HttpServletRequest) request).getSession();
		String basePath = "";
		HttpServletRequest _request = (HttpServletRequest) request;
		basePath = _request.getContextPath();

		Object userObj = session.getAttribute(Constants.SESSION_USER_KEY);
		if (userObj == null) {
			if (isExcludeUrl(_request)) {
				chain.doFilter(request, response);
			} else {
				HttpServletResponse httpResponse = (HttpServletResponse) response;
				httpResponse.sendRedirect(basePath + "/login.do");
			}
		} else {
			if (!isExcludeUrl(_request)) {
				User user = null;

				try {
					user = (User) userObj;
				} catch (Exception e) {
					HttpServletResponse httpResponse = (HttpServletResponse) response;
					httpResponse.sendRedirect(basePath + "/login.do");
				}

				if (user != null) {
					chain.doFilter(request, response);
				} else {
					HttpServletResponse httpResponse = (HttpServletResponse) response;
					httpResponse.sendRedirect(basePath + "/login.do");
				}
			}
		}

		chain.doFilter(request, response);
	}

	public void destroy() {
		config = null;
	}

	/**
	 * 检查当前访问url是否是范围以外的
	 * 
	 * @param request
	 * @return 是排除以外url返回true,否则返回false
	 */
	private boolean isExcludeUrl(HttpServletRequest request) {
		boolean result = false;

		String path = request.getServletPath();
		if (path.equalsIgnoreCase("/login.jsp")) {
			result = true;
		} else if (path.indexOf("/login.do") >= 0) {
			result = true;
		} else if (path.indexOf("/loginMP.jsp") >= 0) {
			result = true;
		} else {
			result = false;
		}

		return result;
	}

	private boolean isMobile(HttpServletRequest request) {
		boolean result = false;
		for (Enumeration en = request.getHeaderNames(); en.hasMoreElements();) {
			String obj = en.nextElement().toString();
			log.debug(obj + ":" + request.getHeader(obj));
		}

		return result;
	}

}

⌨️ 快捷键说明

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