Grails,Vaadin和Spring Security Plugin在一起

时间:2012-08-13 04:01:39

标签: spring grails spring-security vaadin

我有使用vaadin和spring安全核心插件的grails,但不能将这三者结合起来。如果我去一个我使用@Secured的页面,它可以正常工作。但是如果我把@Secured放在我的vaadin应用程序类中,它就什么都不做。我要做的是保护整个vaadin应用程序,然后在该应用程序中保护一些内容以获得更高权限的角色。我在这做错了什么?如果有人能指出我正确的方向,那将是非常棒的。谢谢!

3 个答案:

答案 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
    }

......或任何安全问题。