我正在尝试将spring-security-ldap和spring-security-core打包到一个插件中,该插件提供公司标准的域类,控制器和一些实用程序。另外,我想包含LDAP配置设置。
目的是创建一个插件,所有公司应用程序都可以依赖它来快速开发新应用程序。
在我的BuildConfig.groovy中,我有以下插件:
compile ":spring-security-ldap:1.0.5"
compile ":spring-security-core:1.2.7"
然后在我的插件描述符中,doWithSpring闭包我有动态配置设置:
config.grails.plugins.springsecurity.ldap.authorities.retrieveDatabaseRoles = true
config.grails.plugins.springsecurity.ldap.authorities.retrieveGroupRoles = true
config.grails.plugins.springsecurity.ldap.context.server = 'ldap://<myip>'
config.grails.plugins.springsecurity.ldap.context.managerDn = 'CN=<ldap_user>,CN=Users,DC=company,DC=local'
config.grails.plugins.springsecurity.ldap.context.managerPassword = 'secret'
config.grails.plugins.springsecurity.ldap.search.base //etc...
现在我的描述符中还有一个loadBefore
来说:
def loadBefore = ["springSecurityCore"]
这在我的本地机器上运行得很好,只有当我有CI软件编译它才会失败。
建立于2013年10月11日 09:26:30 C:\ Users \ me.grails \ 2.1.1 \ projects \ MyApp \ plugins \ spring-security-ldap-1.0.5 \ src \ java \ org \ codehaus \ groovy \ grails \ plugins \ springsecurity \ LDAP \ DatabaseOnlyLdapAuthoritiesPopulator.java:22: 错误:包org.springframework.ldap.core不存在 建立11-Oct-2013 09:26:30导入 org.springframework.ldap.core.DirContextOperations;
有没有办法在SpringSecurity插件保持默认值之前预设配置信息?
有没有办法在我更改后重新加载插件配置?
修改 插件示例现在位于Github
答案 0 :(得分:1)
我有一个完全相同的插件。我使用Platform Core配置我的默认值,声明doWithConfig:
def doWithConfig = { config ->
application {
//Spring Security LDAP
grails.plugins.springsecurity.ldap.useRememberMe = false
if(grails.plugins.springsecurity.ldap.active) {
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider', 'anonymousAuthenticationProvider'] // specify this when you want to skip attempting to load from db and only use LDAP
}
}
}
我还设置了我的插件以在之后加载,因为我覆盖了一些Spring Bean:
def loadAfter = ['springSecurityCore','springSecurityLdap']