我正在使用Grails 2.3.3和spring-security-core:2.0-RC4插件。
我试图通过保护控制器操作来保护它,这取决于接受参数的服务的方法调用的结果。这个参数应该是请求参数中的某个参数。
我希望能够做到以下几点:
@Secured("@mySecurityService.myCustomCheck(params.id)")
def myAction(){
//do some things
}我设法做到了以下几点:
@Secured("@mySecurityService.myCustomCheck()")但是现在我不知道如何访问发送给控制器的请求参数。
在体系结构上,是否有可能在params表示法中引用@Secured变量?
PS:我知道你会让我使用spring-security-acl插件。我的问题是,它还增加了一些我认为我不需要的东西。
发布于 2014-10-30 21:08:05
在2.0中,您可以使用闭包作为注释的检查;在docs中有一个简短的写和示例:https://grails-plugins.github.io/grails-spring-security-core/v2/guide/newInV2.html
你可以用这样的方式来表达你的例子:
@Secured(closure={
ctx.mySecurityService.myCustomCheck(
request.getParameter('id'))
})返回true以允许访问。
请注意,ApplicationContext作为ctx变量可用,请求作为request可用;除了使用SpEL时可用的其他变量和方法(有关详细信息,请参阅Security )。params不可用,但您可以使用request.getParameter访问值
https://stackoverflow.com/questions/26658172
复制相似问题