2010-06-15 219 views
6

在我的Grails应用程序我有一些简单的安全过滤器(请注意,这只是一个原型,不是一个商业应用:登录后重定向?

securityCheckFilter(controller:'overview', invert:true) { 
      before = { 
       if(!session?.gaSession?.gaUser) { 
        flash.message = "You are not authorised to see this page. Please login." 
        redirect(controller:'overview',action:'login') 
        return false 
       } 
       return true 
      } 
     } 

这意味着,除了处理该登录控制器“概述” /登记,所有其它的控制器需要认证 的问题是,我想实现本典型流速:

(1)用户试图保护URL (2)重定向登录 (3)登录成功 (4)重定向到网址

在我的代码它的工作,直到3点,但我失踪4

任何提示?

回答

6

其实很简单。只是

  • URI(从你的问题点1)作为参数来登录操作/视图
  • 确保您的登录表单转发此参数的认证行动(例如,通过隐藏字段提交目标)
  • 在认证操作,如果登录成功,只是重定向到该URI

要获得目标URI(在你的过滤器),刚刚从前方取出上下文路径URI:

def targetURI = request.forwardURI - request.contextPath 
+1

非常感谢! – Mulone 2010-06-16 11:36:30