Grails 在视图中自动重定向
我正在使用Grails2.3.3。如果存在特定条件,是否有更好的方法从视图自动重定向到另一个控制器/操作,否则继续显示视图,而不是在操作本身中执行此操作 我要做的是在显示视图之前,我要检查我是否已登录,如果没有,则在没有任何用户干预的情况下自动重定向到登录页面Grails 在视图中自动重定向,grails,grails-2.3,Grails,Grails 2.3,我正在使用Grails2.3.3。如果存在特定条件,是否有更好的方法从视图自动重定向到另一个控制器/操作,否则继续显示视图,而不是在操作本身中执行此操作 我要做的是在显示视图之前,我要检查我是否已登录,如果没有,则在没有任何用户干预的情况下自动重定向到登录页面 如果我可以在视图中执行此操作,则可以很容易地将此登录检查代码添加到_header.gsp中,以影响所有页面。这比为每个感兴趣的视图编写每个操作的代码要快得多。是的,您可以借助Grails自定义标记库的帮助,通过编写javascript代码
如果我可以在视图中执行此操作,则可以很容易地将此登录检查代码添加到_header.gsp中,以影响所有页面。这比为每个感兴趣的视图编写每个操作的代码要快得多。是的,您可以借助Grails自定义标记库的帮助,通过编写javascript代码将页面重定向到不同的URL(如果您未登录)。但这将减少那些将使用您的产品的用户体验,因为您首先呈现到此页面,然后使用Javascript,您会将他们重定向回登录屏幕(如果未登录) 我向您推荐另外三种解决方案:
在GSP中定义一个简单的基于JS的重定向非常简单,在共享模板中甚至更好:
<sec:ifNotLoggedIn>
<g:javascript>
document.observe( 'dom:loaded', function(){
document.location = '${createLink( controller:'login', action:'doLogin' )}';
} );
</g:javascript>
</sec:ifNotLoggedIn>
document.observe('dom:loaded',function()){
document.location='${createLink(控制器:'login',操作:'doLogin')}';
} );
做点什么做点别的。。。但这可能是错误的做法-看看过滤器。。。看看这里,我已经解释了如何扩展过滤器——这将是grails2,因为Grails3.0.XThanks目前不确定但不认为过滤器是受支持的。我遇到的是beforeInterceptor festure,它使您能够在查看之前通过interceptor操作传递控制器的所有操作。必须重做此注释-无法编辑。。。。。谢谢你的建议。我遇到的是beforeInterceptor特性,它使您能够在查看之前通过interceptor动作传递控制器的所有动作。它使我能够进行检查,例如对所有操作进行登录检查,或者可以对特定操作进行筛选,例如检查用户是否具有显示特定视图的特定权限。使用此功能时是否有任何问题需要注意,例如在我使用Grail2.3.3的更高版本中它被弃用?