2013-06-30 40 views
0

我是grails的新手。我最近在我的控制器中使用過會話。但只有一個頁面。現在我想使用多個頁面的會話。但我不知道該怎麼做。以下是我的代碼,其中一頁適用。任何人都可以幫助我嗎?grails在會話中保留一定數量的頁面

def index() { 
    def user = springSecurityService.currentUser 
    if (user){ 
     redirect(controller: 'admistratorAction', action: 'createUser') 
    }else{ 
     redirect(controller: 'login', action: 'index') 
    } 

} 
+0

你能澄清你在一個頁面中使用會話是什麼意思?你能發表你正在使用會議的部分嗎? – Alidad

+0

@Alidad我的意思是,如果用戶登錄,那麼他可以到達createUser頁面,否則不能。上面的代碼工作正常。現在,我想爲不止一個視圖而不是每次寫入視圖。我希望你明白。 –

回答

1

您可能還不熟悉Grails,希望您不是HttpSession的新手。 :)

會話信息只作用於當前Web應用程序 (ServletContext中),所以存儲在一個上下文信息將不 直接可見的另一個。

只要你在相同的ServletContext你應該能夠直接訪問會話變量。在grails中查看Servlet API

@ Alidad-滾動到OP的最後一個問題。

1

在這種情況下,您可以利用grails filter在執行每個操作之前執行檢查。正如dmahapatro提到的,您可以跨應用程序使用會話來存儲用戶對象,使用此過濾器,您可以在執行任何操作之前進行檢查。

像這樣的東西可以幫助你實現它。:

class SecurityFilters { 
    def filters = { 
     loginCheck(controller: '*', action: '*') { 
      before = { 
       if (!session.user)) { 
        redirect(action: 'login') 
        return false 
       } 
      } 
     } 
    } 
}