3

私は Tuckey の URL 書き換えフィルターを自家製のセキュリティ フィルターと組み合わせて使用​​しています。

  • URL 書き換えフィルターがマップされます/*
  • セキュリティ フィルタは「/*」にマップされます

また、URL 書き換えフィルターには次のルールがあります。

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

次のようなリクエストの場合: myapp/user/私はこのフローを期待しています:

  1. URL 書き換えフィルターによってマップされます。リクエスト URL (またはサーブレット パス) はuser.doになります。
  2. セキュリティ フィルタによってマップされます。検証とおそらくリダイレ​​クト
  3. user.doにマッピングされたコントローラーに到達する

しかし、どういうわけか、Tuckey の URL Rewrite がルールを適用するたびに、2 番目のステップがジャンプします。これにより、適切な認証なしで保護されたページにアクセスするなど、非常に不快な動作が発生します。

私が逃したものはありますか?別の動作を期待する必要がありますか?

4

2 に答える 2

3

これは、通常、urlrewritefilter が URL をリダイレクトしないために発生します。内部で転送しているだけです。type="redirect" を属性として追加してみてください。セキュリティ フィルターはリダイレクトされたリクエストをキャッチします。

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

それは以前はうまくいきました。

于 2012-11-28T01:52:37.037 に答える
1

type="redirect"を実行すると、クライアントに 302 "temporary redirect" ステータスが発行され、最終的にブラウザが新しい URL にリダイレクトされます。

ユーザーにブラウザのアドレス行に古い「 from 」 URL を表示させたい場合は、これらを「セキュリティ」フィルタに追加してみてください。

    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>    
于 2014-05-20T03:48:43.237 に答える