带有GWT Requestfactory的Http状态码

时间:2012-01-04 14:10:44

标签: gwt requestfactory

如果我使用GWT Requestfactory,那么向客户发送“未找到404”或“401未授权”的推荐方法是什么?

问候安德烈亚斯

1 个答案:

答案 0 :(得分:6)

RequestFactory是一种 RPC 类协议,而不是 REST 协议。因此,首先,您不会发送“未找到404”:这意味着您的客户端应用甚至不知道如何与服务器通信。

至于“401未经授权”,嗯,取决于

  • 如果要保护对RequestFactoryServlet整体的访问权限,请使用服务器端的servlet过滤器发送响应,并使用自定义RequestTransport(最简单的就是简单在客户端扩展DefaultRequestTransport)以捕获响应并采取相应行动。
  • 如果您只想保护几种方法,或者只允许某些方法访问特定用户(例如,只允许管理员调用方法deleteThisThing),那么您有多种选择,但在所有情况下如果用户未获得授权,则不希望从客户端应用程序调用这些方法(例如,如果用户不是管理员,则不显示删除此事按钮):
    • 在方法本身中执行此操作,抛出异常(您可以使用RequestFactoryServlet.getThreadLocalRequest().getUserPrincipal()来获取当前用户)
    • 使用ServiceLayerDecorator覆盖invoke方法进行检查(可能基于方法本身的某些注释)并在用户未获得授权的情况下调用report() < / LI>