Grails Spring安全自定义用户详细信息bean被覆盖

Grails Spring安全自定义用户详细信息bean被覆盖,grails,groovy,spring-security,spring-bean,Grails,Groovy,Spring Security,Spring Bean,我的应用程序架构如下: MainWebApp -> CustSecPlugin -> Spring-Security-Core 因此,我有一个围绕spring安全插件的插件,它提供了许多web应用程序中常见的额外实现。我所做的一件事就是使用一个定制的UserDetailsService 我已经遵循了这方面的指南,当自定义用户详细信息的bean在grails app/conf/spring/resources.groovy中定义时,我可以让我的自定义安全插件独立运行 这

我的应用程序架构如下:

MainWebApp 
  -> CustSecPlugin
    -> Spring-Security-Core
因此,我有一个围绕spring安全插件的插件,它提供了许多web应用程序中常见的额外实现。我所做的一件事就是使用一个定制的
UserDetailsService

我已经遵循了这方面的指南,当自定义用户详细信息的bean在
grails app/conf/spring/resources.groovy中定义时,我可以让我的自定义安全插件独立运行

这个文件没有被读取,因为它是一个插件,所以我将bean移动到
doWithSpring{}
闭包中。这在独立运行时仍然有效

然而,我现在发现,当使用webapp运行时,我的定制细节服务被忽略,主体现在是一个标准的GrailUser

如果我使用bean定义并将它们移动到web应用程序的
grailsapp/conf/spring/resources.groovy
,那么它就可以工作了。但是我不想在每个使用这个插件的应用程序中都定义这些bean

我不知道发生了什么事。为什么
userDetailsService()
bean作为插件在web应用程序中运行时会被忽略?我可以看到其他bean被正确设置(打印出所有的bean名称并使自己成为一个虚拟bean)。这几乎就像是又一次倒退了

是否有任何地方我可以定义这个bean,使它明确地工作


解决这个问题的最佳方法是什么?

这可能是插件的加载顺序。您可以使用以下方法在插件描述符中更改它:

def loadAfter = ["springSecurityCore"]

这将强制在核心插件之后加载bean。

我唯一的问题是我的内部插件为安全核心插件设置配置参数。我发现如果我的包装器插件在内核之后加载,配置设置不正确,插件加载失败。我的插件中还有其他地方可以声明bean吗?对于配置,我通常使用插件。它有一个closure
doWithConfig
来声明将与应用程序合并的配置。啊,平台核心和加载的组合解决了我的问题后,以前从未见过这个插件。干杯