URLrewrite过滤器中的过滤器链

时间:2012-11-07 18:24:16

标签: java tuckey-urlrewrite-filter

我正在使用Tuckey的URL重写过滤器与本土安全过滤器结合使用。

  • 网址重写过滤器映射到/*
  • 安全过滤器映射在'/ *'

此外,URL重写过滤器具有以下规则:

<rule>
    <name>User</name>
    <from>^/user/$</from>
    <to>/user.do</to>
</rule>

对于以下请求: myapp / user / 我期待此流程:

  1. 由URL重写过滤器映射。请求URL(或Servlet路径)变为 user.do
  2. 由安全过滤器映射。验证并可能重定向
  3. 到达 user.do
  4. 上映射的控制器

    但是,每当Tuckey的URL Rewrite应用规则时,第二步就会跳过。这会导致非常不愉快的行为,例如在没有正确身份验证的情况下访问受保护的页面。

    我错过了什么吗?我应该期待另一种行为吗?

2 个答案:

答案 0 :(得分:3)

这是因为通常urlrewritefilter不会重定向url。它只是在内部转发它。尝试添加type =“redirect”作为属性,安全过滤器将捕获重定向的请求。

<rule>
    <name>User</name>
    <from>^/user/$</from>
    <to type="redirect">/user.do</to>
</rule>

之前对我有用。

答案 1 :(得分:1)

如果您执行 type =“redirect”,客户端将获得302“临时重定向”状态,最终会将浏览器重定向到新网址。

如果您希望用户仍然在浏览器的地址栏中看到旧的“来自”网址,请尝试将这些添加到“安全”过滤器中:

    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>