Grails、Vaadin 7和SpringSecurity:授权不起作用
我已经按照链接使用Grails、Vaadin 7和Spring security实现了应用程序安全性。身份验证部分起作用,但授权似乎不起作用。 我创建了一个简单的服务: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
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插件才能工作