1

我正在尝试保护控制器:

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

}

我在 UrlMappings 中映射了控制器:

"/foo/bar"

似乎当我尝试访问控制器时,/foo/bar注释被有效地忽略了。

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

  1. 我是否需要在静态规则中复制我的所有规则,或者说它是安全的并且过滤器将从注释中提取特定规则就足够了?

我有另一种情况,我使用 UrlMappings 保护控制器,默认 URL 路径已更改,但控制器名称未更改,例如

@Secured(['ROLE_ADMIN'])
MyApiController {

}

UrlMapping 是:/api/company/1/myApi

在这种情况下,无需在 staticRules 中进行任何必要的配置即可获取注释,因此我对需要在何处以及在什么情况下进行配置感到非常困惑。

4

1 回答 1

0

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

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

IMO 这是不直观的,但这就是它目前的工作方式。请注意,如果您使用 InterceptUrlMap 配置样式,它不会以这种方式工作如果您使用 InterceptorUrlMap 样式,您确实参考了 UrlMappings.groovy 的 URL 映射。

于 2015-01-14T17:11:30.383 回答