【问题标题】:Filter chain in URLrewrite filterURLrewrite 过滤器中的过滤器链
【发布时间】:2012-10-27 20:49:12
【问题描述】:

我正在使用 Tuckey 的 URL 重写过滤器和自制的安全过滤器。

  • 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 的控制器

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

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

【问题讨论】:

    标签: java tuckey-urlrewrite-filter


    【解决方案1】:

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

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

    以前对我有用。

    【讨论】:

      【解决方案2】:

      如果您这样做 type="redirect",客户端将收到 302“临时重定向”状态,最终会将浏览器重定向到新网址。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-04
        • 2012-03-22
        • 1970-01-01
        • 1970-01-01
        • 2011-04-13
        • 2012-01-09
        • 1970-01-01
        • 2012-02-17
        相关资源
        最近更新 更多