servlet过滤器配置白名单、黑名单
1、web.xml配置
<filter>
<description>过滤是否登陆</description>
<filter-name>encodingFilter</filter-name>
<filter-class>com.stxx.manager.filter.EncodingFilter</filter-class>
<init-param>
<description>配置白名单</description>
<param-name>noCheck</param-name>
<param-value>
/login.jsp,
/register.jsp
</param-value>
</init-param>
<init-param>
<description>过滤不成功转向地址</description>
<param-name>redirectPath</param-name>
<param-value>/login.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
2、创建过滤器
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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 org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger; /**
* 登陆过滤 配置白名单、黑名单
* @author zxf
*
*/
public class EncodingFilter implements Filter { Logger log = Logger.getLogger(EncodingFilter.class); private static final String NO_CHECK = "noCheck";
private static final String REDIRECT_PATH = "redirectPath";
private List<String> noCheckList = new ArrayList<String>();
private String redirectPath = "/login.jsp"; public void init(FilterConfig init) throws ServletException {
log.info("初始化filter....");
String noChecks = init.getInitParameter(NO_CHECK);
if(StringUtils.isNotBlank(noChecks)){
if(StringUtils.indexOf(noChecks,",")!=-){
for(String no : noChecks.split(",")){
noCheckList.add(StringUtils.trimToEmpty(no));
}
}else{
noCheckList.add(noChecks);
}
}
String path = init.getInitParameter(REDIRECT_PATH);
if(StringUtils.isNotBlank(path)){
redirectPath = path;
}
} private boolean check(String path) {
if (noCheckList == null || noCheckList.size() <= )
return false;
for (String s : noCheckList) {
if (path.indexOf(s) > -) {
return true;
}
}
return false;
} public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
log.info("被filter过滤.......");
String contextpath = request.getContextPath();
if("/".equals(contextpath)){contextpath="";}
if(check(request.getRequestURI())){
log.info("白名单");
arg2.doFilter(request, response);
}else{
log.info("黑名单");
response.sendRedirect(response.encodeURL(contextpath+redirectPath));
}
} public void destroy() {
log.info("销毁filter....");
} }
servlet过滤器配置白名单、黑名单的更多相关文章
- Confluence 6 配置白名单
Confluence 管理员可以通过添加 URLs 到白名单选择出入的链接和使用 RSS 宏,HTML 包含宏和小工具中的内容. 如果一个内容被添加到 Confluence 系统中,但是这个 URLs ...
- Oracle数据库IP访问限制(IP白名单黑名单)
1.编辑sqlnet.ora 内容为: #允许访问的IP(白名单) TCP.INVITED_NODES=(127.0.0.1,192.168.56.109,ip2,ip3,..,..本地IP..)若使 ...
- ubuntu apache2.4.7配置白名单
1.仅允许192.168.1.1访问,此处需要注意apache2.2和2.4版本之后白名单配置的方法是不一样的 <Directory /var/www/> Options FollowSy ...
- nginx配置白名单
配置如下: http模块: http { include mime.types; default_type application/octet-stream; #log_format main '$r ...
- 【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
当使用Azure Redis高级版时候,为了能更好的保护Redis的安全,启用了虚拟网路,把Redis集成在Azure中的虚拟网络,只能通过虚拟网络VENT中的资源进行访问,而公网是不可以访问的.但是 ...
- nginx 配置白名单
在http 模块 增加 geo $remote_addr $ip_whitelist{ default 0; include white_ip.conf; } 在location 模块 增加 (注意i ...
- axios 封装 跨域 实现 (后端跨域配置白名单)
1. 始vue化项目 vue init webpack deaxios # 使用脚手架创建项目 deaxios(项目名,随便取得) cd deaxios # 进入项目cnpm install npm ...
- Java学习笔记之:Java Servlet 过滤器配置
一.步骤 1.创建一类实现Filter接口,重写父类的方法 public class SimpleFilter implements Filter { public void destroy() { ...
- logstash配置白名单决定去哪个index
input { kafka { bootstrap_servers => "127.0.0.1:9092" client_id => "log" a ...
随机推荐
- udp协议基础(转自疯狂java讲义)
第17章 网络编程 17.4 基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...
- 【移动开发】Android中WIFI开发总结(二)
搞了好几天终于有点眉目了,这里接着总结一下Android中WiFi的使用,在前面(http://smallwoniu.blog.51cto.com/3911954/1334951)我们已经简单了解了W ...
- MySQL(13):Select-order by
1. 按照字段值进行排序: 语法: order by 字段 升序|降序(asc|desc) 允许多字段排序,指的是,先按照第一个字段排序,如果说,不能区分,才使用第二个字段,以此类推. ...
- 你以为你了解最常用的string.substring()的几个常见问题吗?
---恢复内容开始--- 前言: 1.项目中我们难免会用到各种对字符串的处理方法,可是你曾知道substring()这个用法别有洞天?你考虑过一下几个情况吗? 使用Substring()时的正确写法: ...
- JAVA Hibernate别名排序问题
今天在做统计功能的时候遇到这样一个问题,由于查询结果为统计的数据,即使用了sum方法生成的字段, else trigger_count end) as hitCount from TriggerSta ...
- 可清空文本的EditText
代码如下: public class DeleteEditText extends EditText { private Context mContext; //删除图标 private Drawab ...
- UIGestureRecognizer手势
常用手势: 滑动,轻点,捏合,旋转,拖拽,长按 1.滑动(快速滑动) let swipeUp = UISwipeGestureRecognizer(target: self, action: Sele ...
- image控件读取数据库二进制图片
DataGridShowImage.aspx <%@ Page language="c#" debug="true" Codebehind=" ...
- Linux查看一个文件夹大小
1.Linux查看一个文件夹大小: du -sh /home/yangkun [yangkun@sg1 bin]$ du -sh /home/yangkun/ 164M /home/yangkun/ ...
- ubuntu下wine打开自由们找不到MFC42.DLL重新安装的解决方法
一直在找ubuntu下的X墙工具,看到大部分的都是ssh和tor的,但是tor下载不到,找了很多方法,没有办法,只能用FG了.但是Fg是运行在windows系统下的程序. 只好再安装一遍wine,用终 ...