如何使用ACL插件?

时间:2012-05-04 03:10:42

标签: grails groovy spring-security acl

我正在尝试在grails应用程序中使用ACL plugin。根据本教程中给出的示例http://grails-plugins.github.com/grails-spring-security-acl/docs/manual/guide/3.%20Tutorial.html,我需要创建一个Service来实现注释@PreAuthorize, @PostAuthorize, @PreFilter, and @PostFilter

我想在我的控制器中实现这种方法,而不是创建服务。我尝试在操作顶部使用@PreAuthorize,但它会返回错误消息:

Annotation @org.springframework.security.access.prepost.PreAuthorize is not allowed on element FIELD

这是否意味着,@PreAuthorize注释不适合调用控制器中的每个动作?

请帮忙。

1 个答案:

答案 0 :(得分:3)

是的,它不适用于控制器,仅适用于服务(和其他Spring bean)。它可能适用于2.0控制器中的方法,因为控制器是Spring bean,但我还没试过。

问题是Spring Security对闭包一无所知,因为它们是一个Groovy概念。它们被调用来处理Grails的Web请求,但不能被Spring拦截,因为它只适用于方法。

这与交易服务和关闭问题有关。你不能在服务中定义一个闭包,并且它是事务性的,因为Spring没有看到它。 Groovy允许你调用闭包就像它们是方法一样,但它只是语法糖。