grails在会话中保留了一些页面

时间:2013-06-30 10:39:26

标签: session grails grails-2.0 grails-controller

我是grails的新手。我最近在我的控制器中使用了session。但只有一页。现在我想在很多页面上使用session。但我不知道该怎么做。这是我下面的代码,适用于一页。有人可以帮我这个吗?

def index() {
    def user = springSecurityService.currentUser
    if (user){
        redirect(controller: 'admistratorAction', action: 'createUser')
    }else{
        redirect(controller: 'login', action: 'index')
    }

}

2 个答案:

答案 0 :(得分:1)

你可能是Grails的新手,我希望你不是HttpSession的新手。 :)

  

会话信息仅限于当前Web应用程序   (ServletContext),因此存储在一个上下文中的信息不会   直接在另一个中可见。

只要你在同一个ServletContext,你就应该能够直接访问会话变量。另请参阅grails中的Servlet API

@ Alidad-回到OP的最后一个问题。

答案 1 :(得分:1)

在这种情况下,您可以利用grails filter在执行每个操作之前进行检查。正如dmahapatro所提到的,您可以在应用程序中使用会话来存储用户对象,使用此过滤器可以在执行任何操作之前进行检查。

这样的事情可以帮助你实现它:

class SecurityFilters {
    def filters = {
        loginCheck(controller: '*', action: '*') {
            before = {
                if (!session.user)) {
                    redirect(action: 'login')
                    return false
                }
            }
        }
    }
}