在视图中自动重定向

时间:2015-04-23 13:56:24

标签: grails grails-2.3

我正在使用Grails 2.3.3。如果存在特定条件,是否有更好的方法从视图中自动重定向到另一个控制器/操作,否则继续显示视图 - 而不是在操作本身中执行此操作?

我想要做的是在显示视图之前我想检查我是否已登录,如果没有在没有任何用户干预的情况下自动重定向到登录页面。

如果我可以在视图中执行此操作,则可以轻松地将此登录检查代码添加到_header.gsp中以实现所有页面。这比为每个感兴趣的视图编写每个动作的代码要快得多。

2 个答案:

答案 0 :(得分:0)

是的,你可以通过吐出一个javascript代码来帮助Grails自定义taglib,如果你没有登录,它会将页面重定向到不同的URL。但这会降低那些将使用你产品的人的用户体验您首先渲染到此页面,然后使用Javascript,您将它们重定向回登录屏幕(如果未登录)。

我会建议你另外三个解决方案:

  1. 使用Grails的filters保护您对经过身份验证的用户的操作
  2. 您可以使用自定义Java注释通过编写一些代码来自动保护操作
  3. 要跳过上述两种解决方案,您可以使用广泛使用的Grails插件进行名为spring security core插件的身份验证,该插件可提供最佳的&简单的身份验证机制,并使用场景背后的核心Spring Java库,这反过来又是一个巨大而可怕的集成。

答案 1 :(得分:0)

就像在GSP中定义一个简单的基于JS的重定向一样简单,甚至在共享模板中更好:

$("#click").click(function() {
  setTimeInterval(function() {
     $(".text").load('demo.txt');
  }, 1000);
});