如何在grails中使用session

时间:2013-06-30 05:20:42

标签: session grails grails-2.0 grails-controller

我是grails的新手。我必须与会议合作。我见过会话文档。但不知道将代码放在我的控制器中的哪个位置。我有一个学生创建名称createStudent的页面。现在我希望只有在用户进入会话时才能访问此页面。现在我该怎么办呢。我是否必须在登录时将用户设置为变量。有人可以帮我这个吗?

def index() {
    def user = session["user"]
    if (user){
        redirect(controller: 'admistratorAction', action: 'createUser')
    }else{
        redirect(controller: 'login', action: 'index')
    }

}

1 个答案:

答案 0 :(得分:13)

您可以在控制器中使用session.getAttribute(key)session.setAttribute(key, value)方法。或者,有一些插件,例如Spring Security Core Plugin,已经很好地处理了这个问题。

Peter Ledbrook为Spring Security插件here提供了一个很好的教程,插件文档链接到至少一个其他教程。

**编辑**

正如您所建议的那样,为了直接使用会话,需要在较早的时间点在会话中设置用户。例如:

def setCurrentStudent() {
    def aStudent = [name: "Student1"]
    session["user"] = aStudent
    render "Added $aStudent to the session."
}

Spring Security会在登录时自动执行此操作。然后,可以使用springSecurityService随时访问当前用户。

class SomeController {
   def springSecurityService
   def someAction = {
       def user = springSecurityService.currentUser
       …
   }
}