0

私のアプリのアーキテクチャは次のようになります:

MainWebApp 
  -> CustSecPlugin
    -> Spring-Security-Core

そのため、Spring-Security プラグインをラップして、多くの Web アプリで共通の追加の実装を提供するプラグインがあります。私が行うことの 1 つは、カスタムを使用することですUserDetailsService

このためのガイドに従っており、カスタム ユーザーの詳細の Bean が で定義されている場合、カスタム セキュリティ プラグインをスタンドアロンで実行できます。grails-app/conf/spring/resources.groovy

このファイルはプラグインであるため読み取られないため、Bean をdoWithSpring {}クロージャーに移動しました。これは、スタンドアロンで実行した場合でも機能します。

しかし、私が今見つけているのは、webapp で実行すると、カスタム詳細サービスが無視され、プリンシパルが標準の GrailsUser になっていることです。

Bean 定義を取得して Web アプリに移動すると、grails-app/conf/spring/resources.groovy機能します。ただし、このプラグインを使用するすべてのアプリでこれらの Bean を定義する必要はありません

何が起こっているのかわかりません。userDetailsService()Web アプリでプラグインとして実行されたときに Bean が無視されるのはなぜですか? 他の Bean が適切に設定されていることがわかります (すべての Bean 名を出力し、自分自身をダミー Bean にしました)。それは、再び後退するようなものです。

この Bean を確実に機能させるために定義できる場所はありますか?

これを回避する最善の方法は何ですか?

4

1 に答える 1