用于预打包SpringSecurity配置的自定义插件

时间:2013-10-11 15:22:26

标签: grails spring-security grails-plugin

我正在尝试将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

1 个答案:

答案 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']