1
我跟着this鏈接來實現與Grails,Vaadin 7和Spring Security的應用程序安全性。身份驗證部分起作用,但看起來授權不起作用。 我創建這麼簡單服務:Grails,Vaadin 7和SpringSecurity:授權不起作用
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
到每一個服務類將此代碼添加到每個方法真的很尷尬。我怎樣才能以更清潔的方式做到這一點?