package cn.changtusoft.KnowledgeManager.Filter;
http://topic.csdn.net/u/20091226/00/09e2979b-7c8c-4991-856d-586a278875c0.html?92881
import java.io.IOException;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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 com.anyfolife.util.data.json4ext.message.JSonMessage;
public class PrivilegeFilter implements Filter{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpSession session = ((HttpServletRequest)request).getSession();
JSonMessage jm = new JSonMessage();
HttpServletResponse HttpResponse=(HttpServletResponse) response;
//鑾峰彇璇锋眰鐨刄RL
String uri = ((HttpServletRequest) request).getRequestURI();
String [] list = uri.split( "/" );
String realUri = "";
for ( int i = 2 ; i < list.length ; i ++ ) {
realUri += "/" + list[ i ];
}
System.out.println( uri );
System.out.println(realUri+" ----------realuri");
/*
// 鑾峰彇瀵瑰簲package鑺傜偣鐨刵amespace
int index = realUri.lastIndexOf( "/" );
String nameSpace = realUri.substring( 0, index+1 );
System.out.println( nameSpace );*/
// 鑾峰彇鎺у埗鏂规硶鍚嶇О
int start = uri.indexOf( "!" ) + 1;
int end = uri.lastIndexOf( "." );
String controllingMethodName = uri.substring( start, end );
String actionName =null;
if(uri.endsWith(".action")){
int start2=uri.lastIndexOf( "/" ) + 1;
int end2 = uri.lastIndexOf( "!" );
if(end2!=-1){
actionName = uri.substring( start2, end2 );
}else{
end2=uri.lastIndexOf(".");
actionName = uri.substring( start2, end2 );
}
System.out.println(controllingMethodName+"-----"+actionName);
}
Set<String> fun=(Set<String>) session.getAttribute("userPurview");
//System.out.println(fun.size());
if(fun!=null){
for(String tmp:fun){
System.out.println(tmp);
}
}else{
System.out.println("fun is null");
}
Pattern p ;
Matcher m = null ;
try{
p = Pattern.compile("(.+?)\\?");
m = p.matcher(realUri);
System.out.println(m.find()+"------鍖归厤缁撴灉");
}catch (Exception e){
e.printStackTrace();
}
int flag=3; //FLAG涓?鏃惰〃绀烘病鏈夎繖涓潈闄?
String[] openList={"login","checkLogin","logout","queryQuestionOtherAnswersByPaging",
"/KnowledgeManager/knowledge/web_queryKnowledgePag","getLearnDetialTree",
"queryLearnDetialPag"};
boolean open=false;
for(String tmp:openList){
if(controllingMethodName.equals(tmp)){
open=true;
}
}
if(open){
flag=1; //FLAG涓?鏃惰〃绀鸿鏉冮檺鍙互鏀捐繃
}else if(session.getAttribute("userName")!=null&&session.getAttribute("userName").equals("admin")){
System.out.println(session.getAttribute("userName")+"-----login user");
flag=1;
}else if(session.getAttribute("userName")==null){
flag=2; //FLAG涓?鏃惰〃绀烘病鏈夌櫥闄?
}else if(m.find()==true){
System.out.println("m.find=true");
if(fun!=null&&fun.contains(m.group(1))){
flag=1;}
}else if(m.find()==false){
System.out.println("m.find=false");
int point = realUri.lastIndexOf( "." );
String str = realUri.substring( 0, point );
System.out.println(str+"-----");
if(fun!=null&&fun.contains(str)){
flag=1;}
}
System.out.println(flag+"------姣旇緝瀹岀殑FLAG");
if(actionName!=null&&actionName.equals("qACtrl")||actionName.startsWith("web_")||actionName.equals("eLearningCtrl")){
flag=1;
}
switch(flag){
case 1:
{chain.doFilter(request, response);
System.out.println("鏉冮檺閫氳繃");
break;}
case 2:
{
System.out.println("娌$櫥闄?);
jm.addProperty( "resultMsg" , "浣犺繕娌℃湁鐧婚檰");
jm.addProperty( JSonMessage.RESULT_FLAG , JSonMessage.RESULT_FAIL );
String jmString = jm.toJSonString();
System.out.println( jmString );
HttpResponse.setHeader("Pragma", "no-cache");
HttpResponse.setHeader("Cache-Control", "no-cache");
HttpResponse.setHeader("Expires", "0");
HttpResponse.setHeader("Content-Type", "text/xml; charset=utf-8");
HttpResponse.setCharacterEncoding("utf-8");
try {
HttpResponse.getWriter().print( jmString );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;}
case 3:
{
jm.addProperty( "resultMsg" , "浣犳病鏈夎繖涓潈闄?);
jm.addProperty( JSonMessage.RESULT_FLAG , JSonMessage.RESULT_FAIL );
String jmString = jm.toJSonString();
System.out.println( jmString );
HttpResponse.setHeader("Pragma", "no-cache");
HttpResponse.setHeader("Cache-Control", "no-cache");
HttpResponse.setHeader("Expires", "0");
HttpResponse.setHeader("Content-Type", "text/xml; charset=utf-8");
HttpResponse.setCharacterEncoding("utf-8");
try {
HttpResponse.getWriter().print( jmString );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("娌℃潈闄?);
break;}
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
分享到:
相关推荐
标题中的“cors-filter-2.5.jar”是一个Java Web应用程序使用的库,专门用于处理跨域资源共享(CORS)的问题。CORS是一种机制,允许Web应用通过浏览器从不同源(即非同源策略允许的源)获取资源,以克服浏览器的同源...
本资料“RF filter.rar”涵盖了射频滤波器设计的各种方面,包括低通滤波器、带通滤波器以及Chebyshev滤波器,这些都是射频滤波器的常见类型。 1. 射频低通滤波器:这种滤波器允许低频信号通过,而阻止高频信号。在...
### Java Filter 打印请求返回参数详解 #### 一、背景与目的 在Web开发过程中,经常需要在请求处理流程中增加一些通用的功能,比如日志记录、性能监控、安全控制等。Java Servlet规范提供了Filter机制来实现这些...
Servlet Filter 是Java Servlet API中的一个重要组件,主要用于在Servlet处理请求之前或之后进行拦截处理,例如权限检查、日志记录、内容转换等。进行Servlet Filter的单元测试是确保Filter功能正确性和健壮性的重要...
TI公司开发的FilterPro是一款软件工具,旨在辅助工程师设计由多重反馈(MFB)和Sallen-Key拓扑结构实现的有源滤波器。它能够减少设计和验证有源滤波器时所耗费的时间和精力,这对于现代电子设计而言极为重要,因为...
Filter Solutions 简易教程 Filter Solutions 是一种滤波器设计软件,旨在帮助用户快速设计和实现滤波器电路。下面是 filter solutions 简易教程的知识点总结: 一、Filter Solutions 软件简介 * Filter ...
**FilterPro TI滤波器设计软件详解** FilterPro是由美国Texas Instruments(TI)公司开发的一款专业滤波器设计工具,广泛应用于信号处理、通信、音频系统等领域。它为工程师提供了直观且高效的滤波器设计环境,能够...
`Datagrid-filter`插件正是针对这种需求设计的,它是一个高效且实用的Grid插件,旨在提升数据网格的可操作性和用户交互性。这个插件的核心功能是为每一列提供过滤条件,使得用户能够快速筛选出所需的信息,极大地...
### Java中的Filter(过滤器)使用详解 #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后...
标题中的“cors-filter-1.7.jar”,“cors-filter-2.5.jar”和“cors-filter-2.10.jar”是针对不同版本的CORS过滤器实现。这些jar包是专门为Tomcat设计的,用于处理跨域请求过滤,确保服务器能够安全地响应来自不...
<filter-name>XssFilter</filter-name> <filter-class>com.xxx.Filter.XssFilter</filter-class> </filter> <filter-mapping> <filter-name>XssFilter</filter-name> <url-pattern>/* </filter-mapping>
Filter Wiz Pro适用于低于-1Hz 至10MHz 范围内的截止频率,而适用于此范围的无源滤波器设计必须具备非常大的组件值和组件尺寸 Filter Wiz Pro在几分钟内便能让您设计、优化和仿真一套完整的多级有源滤波器解决方案...
在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...
FilterPro是一款由德州仪器(TI)开发的专业有源滤波器设计软件,它为电子工程师提供了强大而便捷的工具,用于模拟和优化滤波器设计。本教程将涵盖FilterPro的安装过程以及基本的使用方法,包括Sallen-Key滤波器和多...
在IT领域,尤其是在Web开发中,`FilterBuilder`是一个重要的工具,它允许用户构建自定义的查询和过滤条件,以动态地筛选数据。这个组件通常用于数据量大、需要复杂查询逻辑的应用场景,如数据分析、报表展示或者管理...
**Filter Pro 有源滤波器设计软件:TI公司的创新工具** Filter Pro是一款由美国德州仪器(TI)公司开发的专业有源滤波器设计软件。TI作为全球知名的半导体和集成电路制造商,其产品线广泛,包括各种模拟和数字解决...
标题中的“imu_filter_madgwick”指的是Madgwick滤波算法,这是一类用于惯性测量单元(IMU)数据处理的算法,主要用于融合来自陀螺仪和加速度计的数据,以消除噪声和漂移,提高传感器测量的稳定性和准确性。...
对request请求进行拦截,... <filter-class>weixin.idea.waiting.cq.controller.JsFilter</filter-class> </filter> <filter-mapping> <filter-name>sqlFilter</filter-name> <url-pattern>/* </filter-mapping>
Wavelets and Filter Banks_MIT Lecture 1 Discrete-time Filters: Convolution Fourier Transform Lowpass and Highpass Filters Lecture 2 Sampling Rate Change Operations: Upsampling and Downsampling ...
**FilterPro滤波器设计软件详解** FilterPro是一款专业级的滤波器设计软件,它以其用户友好的界面和高效的设计工具,深受电子工程师和研究人员的喜爱。该软件主要用于设计、分析和优化各种类型的滤波器,包括模拟...