带有GWT Requestfactory的Http状态代码

带有GWT Requestfactory的Http状态代码,gwt,requestfactory,Gwt,Requestfactory,如果我使用GWT Requestfactory,那么向客户端发送“404未找到”或“401未授权”的建议方法是什么 问候AndreasRequestFactory是一种RPC协议,而不是REST协议。因此,首先,您不会发送“404NotFound”:这意味着您的客户端应用程序甚至不知道如何与服务器通信 至于“401未经授权”,那要视情况而定 如果您想保护对整个RequestFactoryServlet的访问,那么在服务器端使用servlet过滤器发送响应,并在客户端使用自定义RequestTr

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

问候Andreas

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

至于“401未经授权”,那要视情况而定

  • 如果您想保护对整个
    RequestFactoryServlet
    的访问,那么在服务器端使用servlet过滤器发送响应,并在客户端使用自定义
    RequestTransport
    (最简单的方法是简单地扩展
    DefaultRequestTransport
    )来捕获响应并采取相应的行动
  • 如果您只想保护少数方法,或者只允许特定用户访问某些方法(例如,只有管理员才允许调用方法
    deleteteThishing
    ),那么您有多种选择,但在所有情况下,如果用户未经授权,您都不希望从客户端应用程序调用这些方法(例如,如果用户不是管理员,则不显示“删除此内容”按钮):
    • 在方法本身中执行此操作,并引发异常(可以使用
      RequestFactoryServlet.getThreadLocalRequest().getUserPrincipal()
      获取当前用户)
    • 使用
      ServiceLayerDecorator
      覆盖
      invoke
      方法进行检查(可能基于方法本身的一些注释),并在用户未经授权的情况下调用
      report()
RequestFactory是一种RPC协议,而不是REST协议。因此,首先,您不会发送“404未找到”:这意味着您的客户端应用程序甚至不知道如何与服务器通信

至于“401未经授权”,那要视情况而定

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

谢谢你的回答。是的,我只想保护一些方法,所以我在方法本身中这样做。我不能用requestfactory抛出异常子类型,对吗?当客户端请求编辑已删除的对象时,我想抛出404(客户端数据可能不总是100%最新)。如果该方法需要授权且客户端未登录,我将抛出401。好的,这很有意义。非常感谢。@Thomas,我想“只保护少数方法,或者只允许特定用户访问某些方法”,是否可以在servelt筛选器中执行此操作?这是我的问题,谢谢您的回答。是的,我只想保护少数方法,因此我在方法本身中执行此操作。我不能用requestfactory引发异常子类型,对吗?当客户端请求编辑已删除的对象时,我想引发404(客户端数据可能并非总是100%最新的)。如果该方法需要授权且客户端未登录,我将抛出401。好的,这是有意义的。非常感谢。@Thomas,我想“只保护少数方法,或者只允许特定用户访问某些方法”,是否可以在servelt筛选器中执行此操作?这是我的问题