grails 2.4.0.M1 中的 spring 安全插件出错

Posted

技术标签:

【中文标题】grails 2.4.0.M1 中的 spring 安全插件出错【英文标题】:Error with spring security plugin in grails 2.4.0.M1 【发布时间】:2014-04-10 02:44:03 【问题描述】:

我遇到了编译问题,使用 grails 2.4.0.M1 和 spring-security-core:2.0-RC2

这是错误:

..../target/work/plugins/spring-security-core-2.0-RC2/src/groovy/grails/plugin/springsecurity/ReflectionUtils.groovy: 205:在静态范围内发现了明显的变量“org”,但没有 引用局部变量、静态字段或类。可能的原因: 您试图在绑定或实例中引用变量 静态上下文中的变量。你拼错了一个类名或 静态导入的字段。请检查拼写。你尝试过 使用方法 'org' 但在不允许的地方省略括号 语法。 @ 第 205 行,第 18 列。 应用程序 = org.codehaus.groovy.grails.commons.ApplicationHolder.application ^

问题似乎出在这个方法上

private static GrailsApplication getApplication()  
                if (!application)  
                        application = org.codehaus.groovy.grails.commons.ApplicationHolder.application 
                 
                application 
         

关于 ReflectionUtils.groovy 类,

有没有其他人遇到过这样的事情?如果有,你是怎么解决的?

【问题讨论】:

【参考方案1】:

我今天解决了这个问题 - https://github.com/grails-plugins/grails-spring-security-core/commit/ef3aab05bfb0eb2f2cbb2c5945f4fc9ca2f0697d

您可以将@Bubuntux 显示的更改作为临时解决方法,我将在几周后发布 2.0 final 并修复此问题。希望您不打算在生产中使用 Grails M1 版本,因此延迟应该不是太大的问题。

【讨论】:

谢谢你!我实际上在 git repo 上查找了该文件,希望能够提交一个包含更改的拉取请求,不幸的是它已经存在 :( 无论如何期待发布 2.0 顺便说一句,我也遇到了静态规则 (NPE) 的问题 在jira.grails.org/browse/GPSPRINGSECURITYCORE 上创建一个问题,使用一个演示问题的小型测试应用程序 - 运行grails bug-report 并附加该压缩包 使用 spring-security-core-2.0-RC3 摆脱了错误。谢谢。【参考方案2】:

似乎 ApplicationHolder 类很久以前就被弃用了,现在在 grals 2.4 上被删除了

所以我只是换行

application = org.codehaus.groovy.grails.commons.ApplicationHolder.application 

application = Holders.grailsApplication

【讨论】:

哈哈。弃用的实际含义。不像Java中的Date.parse。 ;)

以上是关于grails 2.4.0.M1 中的 spring 安全插件出错的主要内容,如果未能解决你的问题,请参考以下文章

Grails 2.4.4 中的 Spring Security 插件问题

Grails 中的 Spring Security 提供授权

如何使 Grails Spring Security 2.0 中的登录/页面成为初始屏幕?

Grails:乐观锁定,StaleObjectStateException 与 Spring Security 会话中的域,更新计数器

如何删除grails中的spring安全令牌?

如何从 Grails 中的 Spring Security 获取普通密码或解密密码?