【问题标题】:Custom Plugin to Pre-package SpringSecurity Configurations用于预打包 SpringSecurity 配置的自定义插件
【发布时间】:2013-10-19 17:53:51
【问题描述】:

我正在尝试将 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 不存在 构建 2013 年 10 月 11 日 09:26:30 导入 org.springframework.ldap.core.DirContextOperations;

有没有办法在 SpringSecurity 插件使用它们的默认值之前预设配置信息?

有什么方法可以在我更改插件配置后“重新加载”它们?

编辑 插件示例现在在Github

【问题讨论】:

    标签: grails spring-security grails-plugin


    【解决方案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']
    

    【讨论】:

    • 我认为 doWithConfig 已在 2.1.1 中删除。但您的建议可能适用于doWithSpring
    • @JohnGiotta doWithConfig 来自插件平台核心,你检查过我的链接吗?
    • hmm 你能分享应用程序和插件 BuildConfig 吗?
    • 我在github上抛出了一个示例项目
    • 我下载了您的插件,使用了 grails package-plugin 和 grails maven-install,并将其声明为新应用程序的依赖项。它编译成功。是你做了更多的事情吗?
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2019-05-02
    • 2011-09-11
    相关资源
    最近更新 更多