如何在 grails 中使用会话
Posted
技术标签:
【中文标题】如何在 grails 中使用会话【英文标题】:how to use session in grails 【发布时间】:2013-06-27 13:37:45 【问题描述】:我是 grails 的新手。我必须与会话一起工作。我看过会话文档。但不知道将代码放在我的控制器中的哪个位置。我有一个学生创建名称 createStudent 的页面。现在我希望这个页面只有在用户处于会话状态时才能访问。现在我该怎么做。我是否必须在登录时将用户设置为变量。有人可以帮我吗?
def index()
def user = session["user"]
if (user)
redirect(controller: 'admistratorAction', action: 'createUser')
else
redirect(controller: 'login', action: 'index')
【问题讨论】:
【参考方案1】:您可以在控制器中使用session.getAttribute(key)
和session.setAttribute(key, value)
方法。或者,有一些插件,例如 Spring Security Core Plugin 已经很好地处理了这个问题。
Peter Led*** 为 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
…
【讨论】:
感谢您的回复。我已经在使用 Spring Security 核心插件。但我不知道如何从中使用会话。我在编辑器中给出了一个示例源代码。如果条件为假,它会重定向到登录页面。但如果为真,则不会重定向 createUser 页面。你现在能帮忙吗?! 我不确定我是否完全理解这个问题 - 为什么需要直接使用会话?我已经用一些代码 sn-ps 更新了我的答案。希望对您有所帮助。 感谢 @osborp 现在提供帮助。稍后我将处理会议的详细信息。但现在这是基本的答案 感谢您的回复。它对我有帮助!以上是关于如何在 grails 中使用会话的主要内容,如果未能解决你的问题,请参考以下文章