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

时间:2013-04-13 19:36:31

标签: grails spring-security vaadin

我已按照this链接实现了Grails,Vaadin 7和Spring Security的应用安全性。身份验证部分可以工作,但看起来授权却没有。 我创建了一个简单的服务:

import grails.plugins.springsecurity.Secured
class WelcomeService {
    @Secured(['ROLE_ADMIN'])
    def sayHello() {
        return "Hello, ADMIN!"
    }
}

"ROLE_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并将此代码添加到每个方法中真的很尴尬。我怎样才能更清洁?

1 个答案:

答案 0 :(得分:1)

原来它必须像控制器@Secured("hasRole('ROLE_ADMIN')")一样,所有其他人都需要一个ACL插件才能工作。