http请求绕过Filter的实现实例
作者:lqh 发布时间:2021-06-20 17:17:34
标签:java,http,Filter
http请求绕过Filter的实现实例
场景:两个web服务器,A当做服务端,B为客户端,B通过Hessian远程访问A。A上加了session过期filter,通过用户信息检查session是否过期。这种情况下,Hessian会先发给filter,filter读不到用户信息就会认为过期了,引起错误。
解决方案:让hessian请求绕过session过期filter。
filter配置中,不能加exclusion,所以需要用初始化参数给出不过滤的请求。本例中不过滤的格式为>/SarService。
<!--session过期filter -->
<filter>
<init-param>
<param-name>exclusions</param-name>
<param-value>/SarService</param-value>
</init-param>
<filter-name>loginFilter</filter-name>
<filter-class>org.sigsit.vinca.sar.filter.LoginFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Filter类中,在init中读取exclusions,并在doFilter中判断。如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 由于 session 属于 HTTP 范畴,故需要向下转型成 HttpServletRequest 类型
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res=(HttpServletResponse)response;
HttpSession session = req.getSession(); // 取得 session
String username = (String) session.getAttribute("username");
StringBuffer fileURL = req.getRequestURL();
if(fileURL.indexOf(this.exclusions)!=-1){
chain.doFilter(request, response);
}
else{
//原来的处理代码
}
}
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
this.exclusions=config.getInitParameter("exclusions");
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/moonsheep_liu/article/details/6862921


猜你喜欢
- 做侧滑删除网上有很多方案,比如重写Listview实现滑动的监听,今天说下一个SwipeListView,这个是之前一个朋友在网上开源的一个
- 一.本地Nacos安装环境: Win7 ,JDK8 ,maven3.51.下载安装包2.启动nacos服务,bin文件下下面startup.
- using System;using System.Collections.Generic;using System.ComponentMo
- 本文实例讲述了C#使用HttpDownLoadHelper下载文件的方法。分享给大家供大家参考。具体实现方法如下:using System;
- 最近由于工作原因,没时间更新,开始吧~~关于json的返回需要用到一个工具包来将书转换为json格式,在此用到的jar包为: im
- 写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字
- 一、什么是JMSJMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(M
- 一、背景在我们编写程序的过程中,程序中可能随时发生各种异常,那么我们如何优雅的处理各种异常呢?二、需求1、拦截系统中部分异常,返回自定义的响
- Java中字符串中子串的查找共有四种方法(indexof()) indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始
- 简介最近学了java基础后对以前不会写的作业深有感触,想起以前各种在网上找资料找别人的代码参考,所以今天特地写了了简单的基于控制台的学生信息
- 使用SwingWorker线程模式谨慎地使用并发机制对Swing开发人员来说非常重要。一个好的Swing程序使用并发机制来创建不会失去响应的
- Mybatis mapper模糊查询语句LIKE最近做学校安排的课程设计作业,用到SSM框架,在自己写mapper代码是遇到了模糊查询的问题
- 定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类型:行为类模式类图:例子:例如
- C#中Description特性主要用于枚举和属性,方法比较简单,记录一下以便后期使用。扩展类DescriptionExtension代码如
- 分类自定义Layout可以分为两种情况。自定义ViewGroup,创造出一些不同于LinearLayout,RelativeLayout等之
- 栈和队列的本质是相同的,都只能在线性表的一端进行插入和删除。因此,栈和队列可以相互转换。用栈实现队列—力扣232题题目要求:仅使用两个栈实现
- 谷歌的AI击败了一位围棋大师,是一种衡量人工智能突然的快速发展的方式,也揭示了这些技术如何发展而来和将来可以如何发展。人工智能是一种未来性的
- 此文章是看郭神公众号发的一篇,仅作学习。在modlue gradle中添加compile 'cjt.library.wheel:ca
- 本文实例讲述了Java编程使用卡片布局管理器。分享给大家供大家参考,具体如下:运行效果:完整示例代码:package com.han;imp
- 前言前天工作中遇到了这样一个问题,我在接口的参数封装了一个pojo,这是很常见的,当参数一多,惯性的思维就是封装一个pojo.那么在参数前有