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 插件的主要内容,如果未能解决你的问题,请参考以下文章

Groovy:使用 Grails 和 Spring 安全核心插件时出现意外令牌

grails acegi 迁移到 spring-security-core

如何保护使用 Azure 和 Oauth 的 grails API?

grails发布插件错误“找不到加载插件资源[spring.resources]的类”

Grails - grails-spring-security-rest - 无法从 application.yml 加载 jwt 机密

Grails Spring Security - 会话超时后重新登录时重新加载会话变量