我是grails的新手。我必须与会议合作。我见过会话文档。但不知道将代码放在我的控制器中的哪个位置。我有一个学生创建名称createStudent的页面。现在我希望只有在用户进入会话时才能访问此页面。现在我该怎么办呢。我是否必须在登录时将用户设置为变量。有人可以帮我这个吗?
def index() {
def user = session["user"]
if (user){
redirect(controller: 'admistratorAction', action: 'createUser')
}else{
redirect(controller: 'login', action: 'index')
}
}
答案 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
…
}
}