2010-06-15 272 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