2013-07-28 98 views
0

我有一個GWT應用程序設計模式的單身類加載不同的「屏幕」基本上是各種複合小部件代表我的應用程序的不同頁面。檢查用戶是否在GWT應用程序中進行身份驗證的最佳方法是什麼?

public enum ContentContainer { 

    INSTANCE; 

    public void setContent(Composite content) { 
     RootPanel.get("content").clear(); 
     RootPanel.get("content").add(content); 
    } 
} 

我正在使用Apache Shiro執行身份驗證。

我應該使用哪些設計模式來要求我的幾個「屏幕」要求用戶進行身份驗證?我目前正在考慮在單身人士中使用第二種方法,setAuthenticatedContent(),它將執行檢查以查看用戶是否已登錄。但是,這對我來說似乎相當不雅,因爲我必須確保每個單獨的鏈接/按鈕使我能夠輸入一個要求驗證的屏幕,通過setAuthenticatedContent()而不是setContent()

有沒有更好的方法可用於我,我還沒有想到呢?

+0

您的意思是,在服務器或客戶端代碼? –

回答

0

如何擁有第二個存儲用戶是否登錄的單例?然後你的setContent方法可以引用它並渲染內容。

或者可能只是聲明一個static變量內您現有的單身,將存儲此信息。

0

使用Dependency Injection(杜松子酒)將單例對象(即CurrentUser.class)注入到需要訪問信息的所有組件中。
您的CurrentUser.cass包含用戶是否已登錄以及用戶角色(ADMIN,USER等)的信息。

爲了填充你的CurrentUser.class你可以讓到後端的請求(使用RPCRequestFactoryRequestBuilder)或什麼,我會建議使用dynamic host page的做法,讓後端渲染出的用戶信息到你的HTML主頁。
onModuleLoad方法中,您可以使用DictonaryJSNI從HTML主機頁面檢索信息。

重要事項:此appraoch僅用於顯示和隱藏UI控件。當用戶實際執行UI操作時,如果用戶有權執行操作,則您必須在後端檢查總是。 惡意用戶可以修改客戶端上的CurrentUser.class實例。

相關問題