当会话过期后,用户点击页面中的任何链接时,我必须将我的网站流程重定向到登录页面(通过超时或从另一个窗口手动登出)
我在main.gsp中添加了以下代码(包含在每个gsp中)
<script>
$.ajaxSetup({
statusCode: {
401: function(){
// Redirect the to the login page.
location.href = "/gra/login/auth";
}
}
});
</script>
之前以前工作正常,但我们在此阶段对应用程序进行了一些更改(oracle迁移,新UI和spring安全插件)
现在它并没有将整个页面转发到登录页面,但内容只在目标容器中刷新,目标容器由链接点击更新(注销页面仅在该div中出现) 这是它在没有上述代码的情况下的工作方式。 如何使这个全局页面向前发展?
更新:我刚刚在firebug中检查过,发现在会话超时后单击链接 正在生成一个302(暂时移动)代码号而不是401?
答案 0 :(得分:0)
这是使用grails过滤器(Documentation)。
的绝佳任务下面的代码将拦截所有控制器和所有操作,并调用它们belore
并检查会话是否有效。如果失败,则重定向到登录页面。
您应该更改if
语句中的条件以正确检查您的会话。
class SecurityFilters {
def filters = {
sessionCheck(controller: '*', action: '*') {
before = {
if (!session && !actionName.equals('login')) {
redirect(uri: '/gra/login/auth')
return false
}
}
}
}
}