【问题标题】:grails keep a number of page under sessiongrails 在会话下保留多个页面
【发布时间】:2013-06-30 10:39:25
【问题描述】:

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

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

}

【问题讨论】:

  • 你能澄清一下在一页中使用会话是什么意思吗?您可以发布您正在使用会话的部分吗?
  • @Alidad 我的意思是,如果用户登录,那么他可以访问 createUser 页面,否则不能。上面的代码运行良好。现在我想为不止一个视图做这件事,而不是每次都写。我希望你能理解。

标签: session grails grails-2.0 grails-controller


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多