Grails:有条件地加载 Spring Security LDAP 插件

Posted

技术标签:

【中文标题】Grails:有条件地加载 Spring Security LDAP 插件【英文标题】:Grails: Conditionally Load Spring Security LDAP Plugin 【发布时间】:2015-06-11 22:09:27 【问题描述】:

我有一个可以在多个生产环境中运行的应用。在一种环境中,我们希望使用 LDAP 进行身份验证,而在另一种环境中,我们不需要。如果 BuildConfig.groovy 中包含 Spring Security LDAP 插件,则非 LDAP 环境认证失败,因为没有配置 LDAP。

我试过了

environments 
    devldap 
        plugins 
            compile ":spring-security-ldap:2.0-RC2"
        
    

但是 LDAP 插件仍然使用非 LDAP 环境构建,如果我不包含 LDAP 配置,则会导致非 LDAP 环境(在本例中为 development)无法进行身份验证,因为它无法连接到LDAP。

我试过了

grails clean
grails refresh-dependencies

但 LDAP 插件只有在我将其完全注释掉时才会卸载。

如何有条件地在我的构建中包含/排除插件?

【问题讨论】:

【参考方案1】:

我看到这个问题现在有点老了,但是我用 Melody 插件做了类似的事情。在测试期间安装它没有任何价值 - 并且可能会妨碍 - 所以我执行以下操作:

plugins 
    // other plugins ...

    if( Environment.current != Environment.TEST )
        compile ":grails-melody:1.56.0"

    // other plugins ...

所以当我运行“test-app”时,我看到插件“卸载”,然后当我运行“run-app”时,我看到它已安装并且可用。

注意:我最近因为忘记写import grails.util.Environment 而被抓住了。如果你这样做,你会发现Environment.current == [:]Environment.TEST 等等。我相信这是由于配置文件背后的构建器。

【讨论】:

谢谢,有机会我会试试的。事实证明,由于其他原因,我后来完全从该项目中删除了 ldap,但很高兴知道这是可能的。再次感谢。

以上是关于Grails:有条件地加载 Spring Security LDAP 插件的主要内容,如果未能解决你的问题,请参考以下文章