📄 checkloginfilter.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 + -