如何在@Secured表达式中使用服务方法?

时间:2014-10-28 11:27:56

标签: grails groovy spring-security

我正在Grails使用spring-security-core:2.0-RC4

我正在尝试在我的@Secured表达式中进行一些自定义安全检查,如下所示:

import grails.plugin.springsecurity.annotation.Secured;

class AdminController {
    def myCustomSecService;

    @Secured("@myCustomSecService.customCheck()")
    def index() {
        render(view:"index")
    }
}

这似乎根本不起作用。 我已经看到examples@PreAuthorize类似,但是(显然)需要我想避免使用的spring-security-acl插件(除非我真的需要)。

奇怪的是,spring-security-core插件包含jar同时包含@PreAuthorize@PostAuthorize注释。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

经过多次挖掘后,我想我找到了解决方案。

我看到某个地方,如果我在使用Spring时必须覆盖类和方法,那我可能做错了。

我需要做的就是将@Component添加到我的服务

这就是我最终做的事情:

我的控制器:

import grails.plugin.springsecurity.annotation.Secured;

class AdminController {
    def myCustomSecService;

    @Secured("@myCustomSecService.customCheck()")
    def index() {
        render(view:"index")
    }
}

和我的服务:

import org.springframework.stereotype.Component;

@Component("myCustomSecService")
class MyCustomSecService {
    def customCheck() {
        /*do checks here*/
        return true;
    }
}