多模块Maven项目中的Spring Security(在哪里放置DB auth,UserDetails等?)

时间:2013-07-23 23:35:24

标签: spring maven spring-security dependencies multi-module

目前我们有6个Maven模块:

  • webapp
  • security
  • core(提供对User的数据库访问权限)
  • common
  • module1
  • module2

我认为依赖树非常明显:

  • webapp取决于所有内容
  • security取决于核心
  • core取决于常见的
  • common完全不依赖
  • module1取决于核心和常见
  • module2取决于核心,模块1和常见

现在我想要一些BaseEntity:它应该有一个@PrePersist来保存当前的User。几乎每个实体都将使用此BaseEntity。这就是为什么每个模块都依赖于core

因为一切都取决于core,所以将BaseEntity放在core模块中似乎也合乎逻辑。 (即使我更喜欢使用common,但由于依赖性,这似乎是不可能的。)

现在出现问题:要设置当前用户,我必须使用访问SecurityContextHolder.getContext().getAuthentication().getPrincipal()。但是有了这个,我会有一些不必要的依赖(或者我只是过于挑剔?)。

如果我想要UserDetails的自定义实现,问题会变得更糟。我应该把它放在哪里? coresecurity?或者让User实体实施UserDetails是否常见?我不这么认为。问题出现了,因为在验证用户时,我必须在UserDetails模块中创建security对象。当我想要检索当前User时,我必须将getPrincipal()方法转换为自定义UserDetails类。

我真的很困惑如何让松散耦合的东西,但也实现我应用程序所需的一切。

我想到的最后一个想法是关于使用依赖注入,但我不知道它是否有效!? (在currentUser模块中有一个security Bean,其他人都可以通过@Autowired MyCustomUserDetails得到它。

所以请帮我把这些事情搞定!

谢谢! :)

0 个答案:

没有答案