session 变量在 Grails 中不起作用

标签 session grails

我尝试在一个 Controller 中创建新 session 并设置变量,然后将此变量从 session 获取到另一个操作。但 session 返回空值。我使用 Grails 2.3.7。

class AuthorizationController {

    def signIn = {

       def session = request.getSession(true)
       session.setAttribute('username', 'zzzz')
       println(session.getAttribute('username')) // <-- here work
       redirect(action: logout)
    }

    def logout = {
        println(session.getAttribute('username')) // <-- here not work
    }
}

最佳答案

将代码更改为:

class AuthorizationController {

    def signIn() {
       session.username = 'zzzz'
       println(session.username)
       redirect(action: 'logout')
    }

    def logout() {
        println(session.username)
    }
}

您不必创建新 session ,您可以直接使用 Controller 可用的session变量。此外,您不必使用 getter 和 setter 来获取和设置 session 中的值。您可以直接使用它们,就像我在上面的代码中提到的那样。

如果您使用的是 grails > 2.x,请避免在定义 Controller 操作时使用闭包。请改用普通方法类型。

关于 session 变量在 Grails 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27794404/

相关文章:

perl - session 不会在 Mojolicious 中过期

spring - SessionAware 不注入(inject) session 对象

json - Grails在查询中复制JSON

hibernate - 为什么Hibernate在启动时要花费数小时的负载?

php - 如何防止同时查看两个页面

android - 如何清理在 WebView 中创建的 session ?

rest - chalice v3.3.9 : how to keep scaffolded views separate from rest API

grails - 检索域的GORM持久性属性列表

jquery - 使用 jQuery 为 Grails 约束错误提供漂亮的外观(但不是客户端验证)

java - 通过 Volley 设置登录 session Cookie