我是grails的新手。我最近在我的控制器中使用了session。但只有一页。现在我想在很多页面上使用session。但我不知道该怎么做。这是我下面的代码,适用于一页。有人可以帮我这个吗?
def index() {
def user = springSecurityService.currentUser
if (user){
redirect(controller: 'admistratorAction', action: 'createUser')
}else{
redirect(controller: 'login', action: 'index')
}
}
答案 0 :(得分:1)
你可能是Grails的新手,我希望你不是HttpSession的新手。 :)
会话信息仅限于当前Web应用程序 (ServletContext),因此存储在一个上下文中的信息不会 直接在另一个中可见。
只要你在同一个ServletContext
,你就应该能够直接访问会话变量。另请参阅grails中的Servlet API。
@ Alidad-回到OP的最后一个问题。
答案 1 :(得分:1)
在这种情况下,您可以利用grails filter在执行每个操作之前进行检查。正如dmahapatro所提到的,您可以在应用程序中使用会话来存储用户对象,使用此过滤器可以在执行任何操作之前进行检查。
这样的事情可以帮助你实现它:
class SecurityFilters {
def filters = {
loginCheck(controller: '*', action: '*') {
before = {
if (!session.user)) {
redirect(action: 'login')
return false
}
}
}
}
}