10

現在、6 つの Maven モジュールがあります。

  • webapp
  • security
  • core( へのデータベース アクセスを提供しますUser)
  • common
  • module1
  • module2

依存関係ツリーはかなり明白だと思います:

  • webappすべてに依存する
  • securityコアに依存
  • core共通に依存
  • common何にも依存しない
  • module1コアと共通に依存
  • module2core、module1、common に依存

今、私はいくつかしたいと思いますBaseEntity: 現在の@PrePersistを保存するが必要Userです。ほぼすべてのエンティティがこれを使用しますBaseEntity。そのため、すべてのモジュールは に依存していcoreます。

そして、すべてが に依存しているため、これもモジュールcoreに入れるのが理にかなっているようです。(これを使用したい場合でも、依存関係のために不可能に思えます)。BaseEntitycorecommon

ここで問題が発生します。現在のユーザーを設定するには、 access を使用する必要がありますSecurityContextHolder.getContext().getAuthentication().getPrincipal()。しかし、これを使用すると、不要な依存関係が発生します (または、あまりにもつまらないのでしょうか?)。

のカスタム実装が必要な場合、問題はさらに悪化しUserDetailsます。どこに置けばいいですか?coreまたはsecurityUserそれとも、エンティティに実装させるだけが一般的UserDetailsですか? 私はそうは思わない。ユーザーを認証するときに、モジュールUserDetails内にオブジェクトを作成する必要があるため、問題が発生します。securityそして、現在のものを取得したいときは、メソッドをカスタムクラスUserにキャストする必要があります。getPrincipal()UserDetails

物事を疎結合のままにしておく方法が本当に混乱していますが、アプリケーションに必要なすべてを達成することもできます。

最後に頭に浮かんだのは、依存性注入を使用することでしたが、うまくいくかどうかはわかりません!? (モジュールcurrentUser内に Bean があり、security他のすべての人は を介し​​て簡単に取得できます@Autowired MyCustomUserDetails)

だから、それらを正しくするのを手伝ってください!

ありがとうございました!:)

4

1 に答える 1