Session 会话超时登录时,会在<;车身>;标记,而不是重定向到新的gsp页面
我是Grails新手,正在处理一个只有两个控制器的项目,一个用于登录,另一个用于资源管理器(类似于windows资源管理器,左侧面板显示树状结构,右侧将文件夹内容显示为表) 应用程序正在按预期工作,这意味着当用户访问应用程序时,如果用户未登录,它将显示登录屏幕,如果用户已登录,它将显示浏览器屏幕 但会话超时情况并非如此:假设会话已超时,用户单击浏览器屏幕右侧面板中的链接,则登录屏幕将显示在右侧面板中 我正在使用SecurityFilter重定向到登录屏幕 SecurityFilters.groovy def过滤器={Session 会话超时登录时,会在<;车身>;标记,而不是重定向到新的gsp页面,session,grails,login,timeout,Session,Grails,Login,Timeout,我是Grails新手,正在处理一个只有两个控制器的项目,一个用于登录,另一个用于资源管理器(类似于windows资源管理器,左侧面板显示树状结构,右侧将文件夹内容显示为表) 应用程序正在按预期工作,这意味着当用户访问应用程序时,如果用户未登录,它将显示登录屏幕,如果用户已登录,它将显示浏览器屏幕 但会话超时情况并非如此:假设会话已超时,用户单击浏览器屏幕右侧面板中的链接,则登录屏幕将显示在右侧面板中 我正在使用SecurityFilter重定向到登录屏幕 SecurityFilters.groo
loginCheck(controller:'*', action:'*') {
before = {
if (!session.idpuser && actionName != "login") {
redirect(controller: "user", action: "login")
return false
}
}
}
}
userController.groovy
def登录(){
}
explorerController.groovy
def生成文件={
.....
render(template: 'list', model: [ dirList: dirList])
}
UrlMappings.groovy
静态映射={
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(action:"file", controller: "explorer")
"500"(view:'/error')
}
我认为login.gsp在右侧面板中呈现的原因是,当用户单击右侧面板中的链接时,会调用“generateFiles”操作,这将login.gsp呈现为explorer.gsp中的模板。但我不知道如何修复它:(
如果有人能帮我解决这个问题,我将不胜感激。
请帮助!!!!!由于这是一个基于ajax的网站,您需要明确处理“您需要登录”在您的ajax响应处理程序中进行响应,并在需要时强制用户登录页面。看起来我发现解决方案可能不是一种有效的方法,但它可以工作。根据从ajax调用中得到的响应,我使用
window.location.href='${createLink(controller='user',action='login')}'
谢谢cdeszaq的提示。我真的很感激。这是一个Ajax-y应用程序,还是整个页面都被重新加载以执行相关的用户操作?是的,每次单击浏览器页面都会发出一个Ajax调用来检索数据。您应该看一下:我从Ajax调用中得到的响应/数据是登录的内容。gsp,所以我尝试了$(document).html(data),但它进入了一个无限循环,我的浏览器崩溃了。(我知道这不是正确的方法:(正在寻找一个快速修复)。有没有办法从javascript重定向到gsp页面
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(action:"file", controller: "explorer")
"500"(view:'/error')
}