2012-03-20 12 views
1

私はStripes 1.5を使用しており、ページへの不正アクセスを防ぐためにインターセプタ(this exampleベース)を使用していました。Stripes Interceptorを使用して他のサーブレットへのアクセスを防止

サーブレットへのアクセスを防ぐために同じインターセプタを使用したいと思います。

私は(DisplayChartは私が守りたいサーブレットである)web.xmlにこの本を追加しました:

<filter-mapping> 
    <filter-name>StripesFilter</filter-name> 
    <servlet-name>DisplayChart</servlet-name> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

をしかし、それは動作しませんaccesingとき、インターセプタintercept方法が実行されませんDisplayChartサーブレットパス(たとえI @InterceptsすべてがLifeCycleStageであっても)。

別のサーブレットにアクセスしたときにインターセプタを実行する方法はありますか?または、ストライプフィルタはそのように使用されることは意図されていません(と私はプレーンFilterを使用する必要があります)?

答えて

1

ストライプス以外のサーブレットにStripesインターセプタを適用できるかどうかはわかりません。

しかし、私はあなたがすべきではないと確信しています。

Stripesインターセプタは、Stripes、Stripesのリクエストライフサイクルに固有です。プレーンサーブレットへのリクエストは、Stripesリクエストではなく、Stripesフィルタを経由してもこのライフサイクルを経由しません。このような要求は、たとえ可能であっても、Stripesインターセプタを使用すべきではありません。

Stripesインターセプタの認証コードをStripes-Agnosticサービスクラスに分解し、そのクラスを使用する標準フィルタを作成することをお勧めします。 Stripesインターセプタとフィルタは、サービスに渡す非常に小さなコードです。

1

ストライプフィルタは、実際にはアクションビーンとその前のストライプスインターセプタのみにディスパッチするStripesフロントコントローラですので、そのように使用することはできません。

すでに想定したように、通常のサーブレットフィルタが必要です。

関連する問題