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 ...
随机推荐
- LSI MegaCli 命令使用2
#/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL 查raid级别#/opt/MegaRAID/MegaCli/MegaCli64 -AdpAll ...
- 关于安装PHP补装PDO与PDO_MYSQL操作
我这里是通过PHP源码包来安装的 1.安装pdo cd到你的PHP源码包下的ext/pdo目录,然后执行如下操作: #/usr/local/php/bin/phpize (/usr/local/p ...
- mysql删除数据库报错及解决方法
前几天在测试环境的数据库上创建了一个数据库,发现不能授权也不能删除. 最后经过排查发现,数据库名称不能出现中划线 " - " , 那么,怎么才能把带有特殊字符的数据库呢? 操作时需 ...
- 菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类
using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; usin ...
- SQL语句添加删除修改字段及一些表与字段的基本操作
用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200)2.删除字段 ALTER TABLE table_NA ...
- 第一个androidAPP项目总结—ListView的上拉和下拉
1.下拉刷新 需继承implements SwipeRefreshLayout.OnRefreshListener @Overridepublic void onRefresh() { new Wea ...
- 解决:debug-stripped.ap_' specified for property 'resourceFile' does not exist.
1.错误描述 更新Android Studio到2.0版本后,出现了编译失败的问题,我clean project然后重新编译还是出现抑郁的问题,问题具体描述如下所示: Error:A problem ...
- 3.RxJava详解
一.RxJava 到底是什么 异步(取代AsyncTask/Handler/XXX/...?) 二.RxJava 好在哪 简洁(逻辑的简洁,.一步一走) 举例: 题目:将文件夹中的图片都取 ...
- C#将图片字节流转为Base64直接放入html的img标签src属性中
1,图片要转为byte[], 2,注意加上“data:image/jpeg;base64,”,这里jpeg可以换成其他. string html = "<img src='data:i ...
- C++程序设计教程学习(0)-引子
回想一下从事C++相关开发工作已经有4年,主要从事基于MFC.Duilib等GUI框架开发进行windows应用程序开发,还涉及了一些开源的项目.但是真的谈起这门语言或多或少都会有些心虚,关于C++的 ...