【发布时间】:2013-12-13 11:30:21
【问题描述】:
我的应用架构是这样的:
MainWebApp
-> CustSecPlugin
-> Spring-Security-Core
所以我有一个插件,我围绕 spring-security 插件提供额外的实现,这在许多 Web 应用程序中都很常见。我做的一件事是使用自定义UserDetailsService。
我已经遵循了这方面的指南,并且当自定义用户详细信息的 bean 在 grails-app/conf/spring/resources.groovy 中定义时,我可以让我的自定义安全插件独立运行。
由于它是一个插件,因此无法读取此文件,因此我将 bean 移动到 doWithSpring {} 闭包中。这在独立运行时仍然有效。
但是我现在发现的是,当使用 webapp 运行时,我的自定义详细信息服务被忽略,并且 Principal 现在是标准 GrailsUser
如果我使用我的 bean 定义并将它们移动到网络应用程序的 grails-app/conf/spring/resources.groovy 中,那么它就可以工作。但是我不想在每个使用这个插件的应用程序中定义这些 bean
我不确定发生了什么。为什么userDetailsService() bean 在 Web 应用程序中作为插件运行时会被忽略?我可以看到其他 bean 正在正确设置(打印出所有 bean 名称并让自己成为一个 dummy bean)。它几乎就像它再次受到挫折。
我可以在哪里定义这个 bean 以使其绝对有效?
解决这个问题的最佳方法是什么?
【问题讨论】:
标签: grails groovy spring-security spring-bean