0

我是 grails 的新手。我最近在我的控制器中使用了会话。但只有一页。现在我想将会话用于多个页面。但我不知道该怎么做。这是我下面的代码,适用于一页。谁能帮我解决这个问题?

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

}
4

2 回答 2

1

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

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

class SecurityFilters {
    def filters = {
        loginCheck(controller: '*', action: '*') {
            before = {
                if (!session.user)) {
                    redirect(action: 'login')
                    return false
                }
            }
        }
    }
}
于 2013-07-01T11:44:13.450 回答
1

您可能对 Grails 不熟悉,希望您对HttpSession不陌生。:)

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

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

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

于 2013-06-30T14:10:01.453 回答