私のアプリのアーキテクチャは次のようになります:
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 を確実に機能させるために定義できる場所はありますか?
これを回避する最善の方法は何ですか?