它可以定義的要求單點有特殊的處理程序與吉斯支持處理,如下圖所示:GWT ::過程中的服務器錯誤
@Singleton
public class GuiceRemoteServiceServlet extends RemoteServiceServlet {
@Inject
private Injector injector;
@Override
public String processCall(String payload) throws SerializationException {
RPCRequest req = RPC.decodeRequest(payload, null, this);
RemoteService service = getServiceInstance(
req.getMethod().getDeclaringClass());
return RPC.invokeAndEncodeResponse(service, req.getMethod(),
req.getParameters(), req.getSerializationPolicy());
}
@SuppressWarnings({"unchecked"})
private RemoteService getServiceInstance(Class serviceClass) {
return (RemoteService) injector.getInstance(serviceClass);
}
}
基本上,這是理想的地方做一些安全相關的東西,比如檢查用戶是否被認證。我需要確保用戶通過對服務器的任何請求進行身份驗證。所以一般情況下我會添加方法validateUser,這將返回true/false或拋出異常。在上面的代碼中,將在processCall內調用此方法。
現在的問題是 - 我如何處理這個身份驗證響應客戶端?我想將它放到單個地方,並確保任何服務默認情況下都會啓用此用戶驗證。任何新服務必須「安全」,而不添加任何與安全相關的代碼。所以沒有在「onFailure」方法或類似的東西中複製/粘貼這段代碼。
有什麼想法?
這很好,我決定這樣做 - 但是爲了處理常見的異常處理而創建另一個抽象類並不好。 – jdevelop