求助如何在filter中forward可以继续进入FilterChain

现在有个需求是是需要对请求的url做一个转换,进来的url是加密过的,需要解密后转发到正确的servlet或者到文件
所以打算用一个forward来做转发,如果是sendRedirect的话就会在用户浏览器上看到明文,这样就没有意义了。
试了一下forward发现这个方法对于没有声明过滤forward请求的过滤器来讲会直接跳过,也就是没有声明这个<dispatcher>FORWARD</dispatcher> 会直接跳过,因为现在这个项目是别人的,我不能去改人家filter的配置,但是要在请求到达我的filter的时候做到正确的转发,并且进入应该进入的filter
我尝试过用HttpServletRequestrWrapper包装request,重写了和路径相关的所有方法,可以起一点作用 ,但是效果不理想,对于采用默认页的路径比如/aa/index.html可以转发到/bb/index.html,但是/aa/无法转发到/bb/。
google和百度了都没有查到比较好的办法,貌似这个路径在进入tomcat未抵达filter的时候就已经分发好了,但是现在就不知道如何在filter中修改来对此做修改,让他分配到正确的路径中去
...全文
398 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
魔都 2016-12-15
  • 打赏
  • 举报
回复
原始需求是什么? 我觉得不应该把url 加密的。 如果说你想让你请求的判断是否合法?也可以对称加密 传个sign就行了。
  • 打赏
  • 举报
回复
forward的url不要调用chain.doFilter(),看看还能不能进入
引用 1 楼 fangmingshijie 的回复:
写个过滤器拦截所有请求就行,可以拦截所有的url
我现在的做法就是写了一个filter拦截,但是转发存在问题,forward无法进入后续的filter
  • 打赏
  • 举报
回复
写个过滤器拦截所有请求就行,可以拦截所有的url
魔都 2016-12-15
  • 打赏
  • 举报
回复
不要为了你的需求就来修改tomcat的代码。如果想要安全只有https
引用 4 楼 wangjian223344 的回复:
原始需求是什么? 我觉得不应该把url 加密的。 如果说你想让你请求的判断是否合法?也可以对称加密 传个sign就行了。
原始的需求是会对页面的url都做一个加密,用户点击url后,请求进入tomcat,由filter来解密,将解密后正确的url匹配分发到正确的路径中去,目的是为了防注入。 无奈之举,我现在是修改了tomcat的源代码,让他来适应我的需求,将forward请求更改为request类型,这样可以重新进一次filter链。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧