【发布时间】:2013-04-06 04:50:42
【问题描述】:
我已关注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 注入到每个服务类中并将此代码添加到每个方法中确实很尴尬。我怎样才能以更清洁的方式做到这一点?
【问题讨论】:
标签: grails spring-security vaadin