Grails 从 2.2.1 升级到 2.3.4 @Secured Annotation

Posted

技术标签:

【中文标题】Grails 从 2.2.1 升级到 2.3.4 @Secured Annotation【英文标题】:Grails Upgrade from 2.2.1 to 2.3.4 @Secured Annotation 【发布时间】:2014-01-30 20:05:40 【问题描述】:

我刚刚将我的 grails 应用程序从 2.2.1 升级到 2.3.4 并取得了很大的成功,并将 spring 安全插件从 1.2.7.3 升级到了 2.0-RC2。但是,我收到有关 spring 安全插件 (spring-security-core:2.0-RC2) 的错误。

    Annotation @grails.plugin.springsecurity.annotation.Secured is not allowed on element FIELD

我认为这可能与只能注释方法而不是动作的新限制有关,但我注释的是方法而不是动作......所以......

这是带注释的控制器(尽管所有注释都会显示该消息):

    @Secured(['IS_AUTHENTICATED_FULLY', 'ROLE_SHOW'])
        def history = 
            def instanceList = super.history(Perm.get(params.id))
            [instanceList: impInstanceList]
        

【问题讨论】:

【参考方案1】:

我认为您需要将其更改为

    @Secured(['IS_AUTHENTICATED_FULLY', 'ROLE_SHOW'])
    def history() 
        def instanceList = super.history(Perm.get(params.id))
        [instanceList: impInstanceList]
    

即将其从闭包定义中更改为方法

【讨论】:

Grails 2.0 允许将旧式闭包作为操作,但我没有添加对带注释的闭包的支持,因为考虑到方法与闭包的优势,它会做更多的工作。

以上是关于Grails 从 2.2.1 升级到 2.3.4 @Secured Annotation的主要内容,如果未能解决你的问题,请参考以下文章

Grails从1.3升级到2.4

将 Grails 应用程序从 1.3.7 升级到 Java 8 兼容版本

从 2.1 升级到 2.2.4 后 Grails 自动编译中断

将 Grails 应用程序从 3.1.10 升级到 3.2.5 时出错

将grails从2.1.1升级到2.4.3

MySQL 从 5.6 升级到 5.7 的 Grails 更改