我正在尝试保护控制器:
@Secured(['ROLE_ADMIN'])
class FooBarController {
}
我在UrlMappings中映射了控制器:
"/foo/bar"
当我尝试以/foo/bar
方式访问控制器时,注释实际上会被忽略。
我看到一些说我需要使用controllerAnnotations.staticRules
的内容。我的第一个问题是:
我还有另一个使用UrlMappings保护控制器的方案,默认的URL路径已更改,但不是控制器名称,例如。
@Secured(['ROLE_ADMIN'])
MyApiController {
}
UrlMapping是:/api/company/1/myApi
在这种情况下,注释在staticRules中没有任何必要的配置被选中,所以我很困惑需要在何处以及在什么情况下配置。
答案 0 :(得分:0)
这里看起来问题是UrlMapping与默认控制器映射约定不匹配。即Config.groovy映射指的是UrlMapping而不是指实际的控制器名称。
请参阅此答案:https://stackoverflow.com/a/16737980/57357以获得更全面的解释。
IMO这是非直观的,但这是它目前的工作方式。请注意,如果使用InterceptUrlMap样式的配置,它不会以这种方式工作。如果您使用InterceptorUrlMap样式,则执行会引用UrlMappings.groovy的URL映射。