【发布时间】:2012-10-16 20:49:39
【问题描述】:
可以使用具有 Guice 支持的特殊类型的处理程序定义单点请求处理,如下所示:
@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);
}
}
基本上,这是做一些与安全相关的事情的理想场所,比如检查用户是否经过身份验证。我需要确保用户在 any request 对服务器的身份验证。所以一般我会添加方法validateUser,它会返回真/假或抛出异常。此方法将在上述代码中的 processCall 中调用。
现在的问题是 - 我如何在 客户端 处理此身份验证响应?我想把它放到一个地方,并确保任何服务都会默认启用此用户验证。任何新服务都必须是“安全的”而不添加任何与安全相关的代码。因此,不要在“onFailure”方法或类似方法中复制/粘贴此代码。
有什么想法吗?
【问题讨论】:
标签: java security gwt exception-handling client-server