【问题标题】:How to work with Grails Http sessions如何使用 Grails Http 会话
【发布时间】:2011-08-08 20:50:28
【问题描述】:

我是 Grails 的新手,我在会话方面遇到困难..

在控制器中,我如何检查用户是否有有效的会话?在 Java/Spring MVC 中,就是简单的 request.getSession(),那么 Grails 中的约定是什么?

如何从会话中添加/获取值?

谢谢,

【问题讨论】:

    标签: http session grails


    【解决方案1】:

    Grails 使用与 Java EE 相同的 servlet API,但它提供了一些额外的便利方法。在 Grails 控制器、taglib 或 GS​​P 中有隐式变量 requestsession 引用当前的 HTTPServletRequestHttpSession

    以下是 Grails 如何让使用这些对象更加方便的示例:

    Java

    Object fooAttr = session.getAttribute("foo");
    

    圣杯

    def fooAttr = session["foo"]
    

    【讨论】:

    • 如何检查请求是否有活动会话,如果没有,如何创建?
    • 与在 Java 中的操作方式完全相同,即使用重载的 request.getSession() 方法
    • @Dónal,你能为这个案例做个小例子吗?
    【解决方案2】:

    您可以使用“会话”对象

    grails session

    【讨论】:

      【解决方案3】:

      用户登录后,在会话中设置值(用户名)。 例如,您的域类是 User.groovy。因此,在控制器中的登录方法中:,您可以这样做:

      def login()
      {
          def u = new User()
          u.properties[
                  'login',
                  'password',
                  ] = params        
          if(u.save())
          session.user = u
      }
      

      之后,每当您想检查会话是否仍在进行时,只需执行

      if(session.user != null)
      //your code
      

      【讨论】:

        【解决方案4】:

        grails 中的会话对象有两个方法,即 getAttribute() 和 setAttribute(),可用于在会话中获取/设置值。

        【讨论】:

          猜你喜欢
          • 2013-06-27
          • 2014-07-19
          • 2019-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-25
          相关资源
          最近更新 更多