Grails使用spring安全注释和UrlMapping来保护控制器

时间:2012-10-15 18:40:55

标签: grails spring-security

我正在尝试保护控制器:

@Secured(['ROLE_ADMIN'])
class FooBarController {

}

我在UrlMappings中映射了控制器:

"/foo/bar"

当我尝试以/foo/bar方式访问控制器时,注释实际上会被忽略。

我看到一些说我需要使用controllerAnnotations.staticRules的内容。我的第一个问题是:

  1. 我是否需要在静态规则中复制我的所有规则,或者说它是否安全并且过滤器会从注释中获取特定规则?
  2. 我还有另一个使用UrlMappings保护控制器的方案,默认的URL路径已更改,但不是控制器名称,例如。

    @Secured(['ROLE_ADMIN'])
    MyApiController {
    
    }
    

    UrlMapping是:/api/company/1/myApi

    在这种情况下,注释在staticRules中没有任何必要的配置被选中,所以我很困惑需要在何处以及在什么情况下配置。

1 个答案:

答案 0 :(得分:0)

这里看起来问题是UrlMapping与默认控制器映射约定不匹配。即Config.groovy映射指的是UrlMapping而不是指实际的控制器名称。

请参阅此答案:https://stackoverflow.com/a/16737980/57357以获得更全面的解释。

IMO这是非直观的,但这是它目前的工作方式。请注意,如果使用InterceptUrlMap样式的配置,它会以这种方式工作。如果您使用InterceptorUrlMap样式,则执行会引用UrlMappings.groovy的URL映射。