我有使用vaadin和spring安全核心插件的grails,但不能将这三者结合起来。如果我去一个我使用@Secured的页面,它可以正常工作。但是如果我把@Secured放在我的vaadin应用程序类中,它就什么都不做。我要做的是保护整个vaadin应用程序,然后在该应用程序中保护一些内容以获得更高权限的角色。我在这做错了什么?如果有人能指出我正确的方向,那将是非常棒的。谢谢!
答案 0 :(得分:1)
看看this post - 他将要保护的方法放入Grails服务类中,注释有效,并从vaadin应用程序调用服务方法。
(请注意,在vaadin应用程序中不建议依赖依赖注入,请参阅plugin docs
中的getBean(String beanName)getBean(Class beanType)答案 1 :(得分:0)
您是否尝试在Config.groovy中设置网址映射?
@Secured-annotation将用于grails控制器类。
答案 2 :(得分:0)
您需要在您的Vaadin应用程序中使用Grails服务。 使用Vaadin插件,在您的UI或任何Vaadin组件中声明您的服务,例如:
import com.vaadin.grails.Grails
import com.company.app.SecurityService
class <YourComponent> extends CustomComponent implements View {
def securityService = Grails.get(SecurityService)
...
<use securityService in your component's methods>
}
在名为“securityService”的grails服务中,连接springSecurityService,并使用注释或spring-security grails插件提供的任何内容。此外,由于Grails的优点,服务已经是事务性的。
@Transactional
class SecurityService {
def springSecurityService
def signOut() {
SCH.context.authentication = null
}
boolean isSignedIn() {
return springSecurityService.isLoggedIn()
}
User getCurrentUser() {
return springSecurityService.currentUser
}
......或任何安全问题。