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 ...
随机推荐
- js函数中变量的作用域
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 对static静态成员的理解
疑惑: 数据成员可以分静态变量.非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例 ...
- C# Byte[]数组读取和写入文件
这个项目我用的是asp.net构建的,代码如下 protected void ByteToString_Click(object sender, EventArgs e) { string conte ...
- activiti总结
1.activiti如何修改登录用户名?在哪个数据库里面添加. 2.activiti的启动和部署在http://activiti.org/userguide/index.html#demo.setup ...
- asp.net 连接oracle,报错误“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本
1.http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 下载对用版本的Instan ...
- 第二章 控件架构与自定义控件详解 + ListView使用技巧 + Scroll分析
1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWindow将DecorView作为整个应用窗口的根V ...
- 怎样取得数组对象和arralist 的长度
数组用length属性 ArrayList用size()方法
- printf格式输出总结
#include<stdio.h> #include<string.h> int main() { ]; ; floa ...
- QT5-控件-QLineEdit-文本输入控件,用来输入密码什么的还不错,可以和Linux登录一样不移动光标哦
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLineEdit> #i ...
- 你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作
4.4 从语句到程序 了解了各种表达式和语句之后,就相当于掌握了写作文要用到的词语和句子,但是,仅有词语和句子是无法构成一篇有意义的文章的.要完成一篇文章,先需要确定这篇文章的结构,是先分述再总述, ...