代码之家  ›  专栏  ›  技术社区  ›  Dasma

Spring安全注释应为内联常量

  •  0
  • Dasma  · 技术社区  · 6 年前

    当我尝试在@Secured注释外定义字符串时,我发现grails中存在以下错误。

    我发现以下错误 角色USER’是java类型的内联常量。字符串不是@grails中的属性表达式。插件。springsecurity。注释。安全的

    class Role {
        final static String USER = "ROLE_USER"
        final static String ADMIN = "ROLE_ADMIN"
    
    
        public final static String[] LOGINED_USER = [USER, ADMIN].asImmutable()
    
    }
    

    下面的控制器说明了我的问题。。

    class MyController {
    
        @Secured(["permitAll"]) //Works fine
        def action1() {
        }
    
    
        @Secured(LOGINED_USER) //Doesn't work
        def action2() {
        }
    
        @Secured([Role.ADMIN, Role.USER]) //Doesn't work
        def action3() {
        }
    
    
        @Secured(["ROLE_ADMIN", "ROLE_USER"]) //Works fine
        def action4() {
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Dmitry    6 年前

    您必须显式公开用户和管理常量,添加 public 修改器

    public final static String USER = "ROLE_USER"
    public final static String ADMIN = "ROLE_ADMIN"
    

    在这种情况下,Groovy将不使用 geters setter 批注中不允许使用。