2013-05-27 28 views
6

プロジェクトでは、Spring Security 3.2を基本セキュリティとして使用しようとしています。このプロジェクトは既に稼働しているため、私はすでに他の(独自の)セキュリティ層を持っています。そこで私はセキュリティ層を溶かすカスタム認証プロバイダを作った。カスタム匿名認証(Spring Security Documentation, chapter 13)を作成する必要があるまで、正常に動作します。カスタム認証フィルタSpring Security 3.2

だから私は、カスタムフィルタを作り、のorignalフィルタ削除:問題があることである

public class SecurityAnonymousAuthenticationFilter extends GenericFilterBean implements InitializingBean { 
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
     logger.info("Entering doFilter method"); 
     //implementation code here 
    } 

    //other methods 
} 

:豆

<http request-matcher="regex" use-expressions="true"> 
    <anonymous enabled="false" /> 
    <custom-filter ref="anonymousAuthFilter" position="ANONYMOUS_FILTER"/> 
    ... 
</http> 

を:

<beans:bean id="anonymousAuthFilter" class="own.package.auth.SecurityAnonymousAuthenticationFilter"> 
    <beans:property name="key" value="anonymousKey "/> 
    <beans:property name="userAttribute" value="anonymous,ROLE_ANONYMOUS"/> 
</beans:bean> 

とTE JavaクラスをdoFilterメソッドは、サーバーを要求するときに呼び出されません。しかし、initメソッドafterPropertiesSet()が呼び出されています...誰も私のcustomFilterが起動されていない理由を理解していますか?

P.S. web.xmlファイルにdelegatingFilterProxyという名前を付けていますので、それは問題ではありません。

+0

カスタムフィルタを他の位置に挿入してください(例:** after = "ANONYMOUS_FILTER")。 ** anonymous enabled = "false" **はフィルタ位置によって動作しますか? –

+0

@MaksymDemidas:コメントのThx、残念ながら、何も変更されません。 –

+0

削除してみましたか?** anonymous enabled = "false" **? –

答えて

1

ANONYMOUS_FILTERは名前空間に関連するフィルタなので、 http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ns-config.html

編集:さらに参考のため

<http auto-config='false' request-matcher="regex" use-expressions="true"> 
    <custom-filter ref="anonymousAuthFilter" position="ANONYMOUS_FILTER"/> 
    ... 
    </http> 

セクション2.3.5に春のセキュリティのドキュメンテーションを参照してください:あなたは、特定のフィルタpsoitionへの参照は、任意の名前空間のタグを避けるために持っており、確かに<anonymous-enabled=false/>タグを残します。

編集2:回答を修正しました。この構成は機能するはずです。そうでない場合は、もっと大きな画像を見る必要があり、アプリ全体を投稿する必要があります。完全な設定から始めましょう。

+0

定義されていない場合、auto-configはすでに 'false'になっています。ドキュメントから:_ **自動設定:**ログインフォーム、BASIC認証、匿名認証、ログアウトサービス、remember-meおよびservlet-api-integrationを自動的に登録します。 "true"に設定すると、これらの機能がすべて追加されます(それぞれの要素を提供することでそれぞれの設定をカスタマイズできます)。指定されていない場合、デフォルトは「false」です._ 「anonymous-enabled = false」を省略する前に述べたように、悲しいことに悲しいことには機能しません。 –

+0

私の答えを更新しました。 – Carsten

+0

あなたは正しいです。それを呼び出す別の問題がありました。私はsecurity = noneを持つ他のhttpタグを持っていて、誰かに見えるようなCSS + jsコンテンツを作ることもできました。悲しいことに、このフィルタパターンは間違っていて、私のアプリ全体は私の匿名フィルタを経由しなくなりました。私と一緒に考えているThx! –

関連する問題