我的应用程序架构是这样的:
MainWebApp
-> CustSecPlugin
-> Spring-Security-Core
所以我有一个插件,我将spring-security插件包装起来,以提供在许多Web应用程序中常见的额外实现。我做的一件事是使用自定义UserDetailsService
。
我已按照相关指南进行操作,并且可以在grails-app/conf/spring/resources.groovy
此文件因其插件而无法读取,因此我将bean移动到doWithSpring {}
闭包中。当独立运行时,这仍然有效。
然而,我现在发现,当使用webapp运行时,我的自定义详细信息服务将被忽略,而Principal现在是标准的GrailsUser
如果我接受我的bean定义并将它们移动到网络应用程序grails-app/conf/spring/resources.groovy
中,那么它就可以了。但是,我不想在每个使用此插件的应用程序中定义这些bean
我不确定发生了什么。当它作为Web应用程序中的插件运行时,为什么会忽略userDetailsService()
bean?我可以看到正确设置其他bean(打印出所有bean名称并使自己成为一个虚拟bean)。它几乎就像它再次落后一样。
有没有我可以定义这个bean以使其绝对有用的地方?
如何最好地解决这个问题?
答案 0 :(得分:1)
这可能是插件的加载顺序。您可以使用以下命令在插件描述符中更改它:
def loadAfter = ["springSecurityCore"]
这将强制您的bean将在核心插件之后加载。