1. 拦截类
package com.pro.huanbao.filter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.OncePerRequestFilter;
/**
* @Title NotLoginedFilter.java
* @Package com.wanpu.filter
* @author wanpu_ly
* @dade 2017年12月26日 上午11:33:37
* @version V1.0
* 类说明:
*/
public class NotLoginedFilter extends OncePerRequestFilter{
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
// 不过滤的uri
System.err.println("请求过滤器启动,开始过滤请求...");
List<String> notFilter = new ArrayList<>();
notFilter.add("/");
notFilter.add("/login");
notFilter.add("/sadr/**");
notFilter.add("/search/**");
notFilter.add("/shop/**");
notFilter.add("/product/**");
notFilter.add("/information/**");
notFilter.add("/company/thirdlogin/*");
notFilter.add("/company/thirdnone/*");
notFilter.add("/company/updatePasswordPage/*");
notFilter.add("/company/updatePassword/*");
notFilter.add("/company/loginByQQIndex");
notFilter.add("/company/loginByQQ");
notFilter.add("/company/loginByWeixin");
notFilter.add("/company/loginByPassword");
notFilter.add("/company/loginBycode");
notFilter.add("/company/confirmPasswordExistence");
notFilter.add("/company/sendRegisterCode");
notFilter.add("/company/sendLoginCode");
notFilter.add("/company/selectByName");
notFilter.add("/company/selectByPhone");
notFilter.add("/register");
notFilter.add("/register.html");
notFilter.add("/company/saveReferUrl");
notFilter.add("/company/selectByEmail");
notFilter.add("/company/sendValidateMail");
notFilter.add("/getImageBase");
notFilter.add("/updateProduceBrandAndAddress");
notFilter.add("/index_img/transfer/*");
notFilter.add("/deleteIndexCache");
notFilter.add("/deleteCategoryCache");
notFilter.add("/myhb/toCipherback");
boolean doFilter = true;
// 请求的uri
String uri = request.getRequestURI();
// 排除请求
if (notFilter.indexOf(uri) != -1) {
doFilter = false;
}else if (uri.indexOf("sadr") != -1) {
doFilter = false;
}else if (uri.indexOf("search") != -1) {
doFilter = false;
}else if (uri.indexOf("shop") != -1) {
doFilter = false;
}else if (uri.indexOf("product") != -1) {
doFilter = false;
}else if (uri.indexOf("information") != -1) {
doFilter = false;
}else if (uri.indexOf("/company/thirdlogin/") != -1) {
doFilter = false;
}else if (uri.indexOf("/company/thirdnone/") != -1) {
doFilter = false;
}else if (uri.indexOf("/company/updatePasswordPage/") != -1) {
doFilter = false;
// 不拦截css,js,图片等
}else if (uri.indexOf("js") != -1) {
doFilter = false;
}else if (uri.indexOf("style") != -1) {
doFilter = false;
}
else if (uri.indexOf("assets") != -1) {
doFilter = false;
}
else if (uri.indexOf("im") != -1) {
doFilter = false;
}
if (doFilter) {
// 执行过滤
// 从session中获取登录实体
Object obj = request.getSession().getAttribute("name");
if (obj == null) {
// 如果session中不存在登录者实体,则弹出框提示需要登录
response.sendRedirect("/login");
}else {
filterChain.doFilter(request, response);
}
}else {
filterChain.doFilter(request, response);
}
}
}
2. web.xml 配置
<!-- 登录拦截器 -->
<filter>
<filter-name>NotLoginedFilter</filter-name>
<filter-class>com.pro.huanbao.filter.NotLoginedFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>NotLoginedFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>