2
我有一個基於GWT的應用程序。我想添加訪問控制。有沒有辦法爲GWT組件添加自定義訪問控制?在基於GWT的應用程序中添加訪問控制
我對增加訪問控制/權限的想法如下。
- 向需要添加訪問控制的類(GWT組件)添加訪問控制註釋(如果存在的話)。
- 當這個組件被渲染時,我的自定義方法檢查訪問控制規則被調用,並根據它的結果組件被渲染。
關於如何實現這一點的任何想法。
我有一個基於GWT的應用程序。我想添加訪問控制。有沒有辦法爲GWT組件添加自定義訪問控制?在基於GWT的應用程序中添加訪問控制
我對增加訪問控制/權限的想法如下。
關於如何實現這一點的任何想法。
在一個GWT應用程序中,我已經完成訪問控制兩種方式,都假設訪問控制在服務器上執行 - 在每個AJAX(GWT RPC)調用中。 JavaScript方面本質上是不安全的,所以任何控制都是毫無意義的。
根據我所需要的細粒度訪問控制的方式,我通過保護GWT RPC端點的servlet容器使用了基於URL的控制。即
/public/gwt.rpc.endpoint
/private/gwt.rpc.endpoint
使用bog標準web.xml或spring安全性來保護私有文件。然而這導致我在啓動GWT應用程序之前處理登錄「正常」基於表單的方式。
更細粒度的方法是對每一個GWT RPC暴露方法使用異常:
interface MyService extends RemoteService {
SomeData getPublicData();
SomeSecret getPrivateData() throws AccessDeniedException;
Result login(String username, String password);
}
interface MyServiceAsync {
void getPublicData(AsyncCallback<SomeData> callback);
void getPrivateData(AsyncCallback<SomeSecret> callback);
void login(String username, String password, AsyncCallback<Result> callback);
}
通過使AccessDeniedException異常RPC序列化,我將獲得在AsyncCallback的是例外 - 這使得扔在GWT應用程序中創建一個登錄對話框。
然而,實際的登錄調用和服務器端會話處理我完全手動完成,不依賴於任何框架(儘管您可以使用Spring Security來完成)。
重複http://stackoverflow.com/questions/3184981/design-patterns-for-enabling-user-interface-elements-based-on-user-permissions - 總之,使用裝飾模式。 – 2010-09-29 13:41:40
我已經通過該線程,但無法找到它在我的情況有用。我嘗試使用裝飾器模式將訪問控制添加到Widget類的GWT中,但Widget類不公開它的生命週期方法(onAttach,onLoad等),在那裏我可以連接我的自定義邏輯。 – 2010-09-29 19:08:47