url转发更新div而不是全局重定向

时间:2012-01-31 04:39:22

标签: javascript ajax grails

当会话过期后,用户点击页面中的任何链接时,我必须将我的网站流程重定向到登录页面(通过超时或从另一个窗口手动登出)

我在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?

1 个答案:

答案 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
               }
           }
       }
   }
}