Grails、Vaadin 7和SpringSecurity:授权不起作用

Grails、Vaadin 7和SpringSecurity:授权不起作用,grails,spring-security,vaadin,Grails,Spring Security,Vaadin,我已经按照链接使用Grails、Vaadin 7和Spring security实现了应用程序安全性。身份验证部分起作用,但授权似乎不起作用。 我创建了一个简单的服务: import grails.plugins.springsecurity.Secured class WelcomeService { @Secured(['ROLE_ADMIN']) def sayHello() { return "Hello, ADMIN!" } } 和一个具有“R

我已经按照链接使用Grails、Vaadin 7和Spring security实现了应用程序安全性。身份验证部分起作用,但授权似乎不起作用。 我创建了一个简单的服务:

import grails.plugins.springsecurity.Secured
class WelcomeService {
    @Secured(['ROLE_ADMIN'])
    def sayHello() {
        return "Hello, ADMIN!"
    }
}
和一个具有
“ROLE\u user”
的用户,但每次我调用

Notification.show(Grails.get(WelcomeService).sayHello())
将显示消息,但应引发一个
AccessDeniedException

你知道为什么会这样吗


UPD:到目前为止,我能想到的唯一解决方案是如下更改服务代码:

def sayHello = {
    if (!springSecurityService.getPrincipal().getAuthorities().contains(new GrantedAuthorityImpl("ROLE_ADMIN"))){
        throw new AccessDeniedException("You are not authorized to do this!")
    }
    return "Hello, ADMIN!"
}

但是将
springSecurityService
注入到每个服务类中并将此代码添加到每个方法中确实令人尴尬。我怎样才能以更干净的方式来做呢?

结果是,对于控制器来说,它必须像
@安全(“hasRole('ROLE_ADMIN')”)
一样,其余的都需要一个ACL插件才能工作。

结果是,对于控制器来说,它必须像
@安全(“hasRole('ROLE_ADMIN'))”)
,其余的都需要一个ACL插件才能工作