現在、6 つの Maven モジュールがあります。
webappsecuritycore( へのデータベース アクセスを提供しますUser)commonmodule1module2
依存関係ツリーはかなり明白だと思います:
webappすべてに依存するsecurityコアに依存core共通に依存common何にも依存しないmodule1コアと共通に依存module2core、module1、common に依存
今、私はいくつかしたいと思いますBaseEntity: 現在の@PrePersistを保存するが必要Userです。ほぼすべてのエンティティがこれを使用しますBaseEntity。そのため、すべてのモジュールは に依存していcoreます。
そして、すべてが に依存しているため、これもモジュールcoreに入れるのが理にかなっているようです。(これを使用したい場合でも、依存関係のために不可能に思えます)。BaseEntitycorecommon
ここで問題が発生します。現在のユーザーを設定するには、 access を使用する必要がありますSecurityContextHolder.getContext().getAuthentication().getPrincipal()。しかし、これを使用すると、不要な依存関係が発生します (または、あまりにもつまらないのでしょうか?)。
のカスタム実装が必要な場合、問題はさらに悪化しUserDetailsます。どこに置けばいいですか?coreまたはsecurity?Userそれとも、エンティティに実装させるだけが一般的UserDetailsですか? 私はそうは思わない。ユーザーを認証するときに、モジュールUserDetails内にオブジェクトを作成する必要があるため、問題が発生します。securityそして、現在のものを取得したいときは、メソッドをカスタムクラスUserにキャストする必要があります。getPrincipal()UserDetails
物事を疎結合のままにしておく方法が本当に混乱していますが、アプリケーションに必要なすべてを達成することもできます。
最後に頭に浮かんだのは、依存性注入を使用することでしたが、うまくいくかどうかはわかりません!? (モジュールcurrentUser内に Bean があり、security他のすべての人は を介して簡単に取得できます@Autowired MyCustomUserDetails)
だから、それらを正しくするのを手伝ってください!
ありがとうございました!:)