Java URL重写筛选器中的筛选器链

Java URL重写筛选器中的筛选器链,java,tuckey-urlrewrite-filter,Java,Tuckey Urlrewrite Filter,我正在使用Tuckey的URL重写过滤器和一个自制的安全过滤器 URL重写筛选器映射到/* 安全筛选器映射到“/*”上 此外,URL重写筛选器具有以下规则: <rule> <name>User</name> <from>^/user/$</from> <to>/user.do</to> </rule> 使用者 ^/使用者/$ /user.do 对于像:myapp/us

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

  • URL重写筛选器映射到
    /*
  • 安全筛选器映射到“/*”上
此外,URL重写筛选器具有以下规则:

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

使用者
^/使用者/$
/user.do
对于像:myapp/user/这样的请求,我期待以下流程:

  • 由URL重写筛选器映射。请求URL(或Servlet路径)变为user.do
  • 由安全筛选器映射。验证和重定向
  • 到达映射到用户上的控制器。执行
  • 然而,不管怎样,只要Tuckey的URL重写应用了一条规则,第二步就会跳过。这会导致真正令人不快的行为,比如在没有正确身份验证的情况下访问安全页面


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

    发生这种情况是因为通常URLRewiteFilter不会重定向url。它只是在内部转发。尝试添加type=“redirect”作为属性,您的安全筛选器将捕获重定向的请求

    <rule>
        <name>User</name>
        <from>^/user/$</from>
        <to type="redirect">/user.do</to>
    </rule>
    
    
    使用者
    ^/使用者/$
    /user.do
    
    这对我以前很有用。

    如果您这样做,客户端将被发出302“临时重定向”状态,最终将浏览器重定向到新的url

    如果您希望用户仍能在浏览器地址行中看到来自“的旧“”url,请尝试将其添加到“安全”筛选器中:

    请求
    向前地
    
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>