2012-01-04 74 views

回答

6

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

至于“401未授权”,那么,它取决于

  • ,如果你要保护的访问RequestFactoryServlet作为一个整体,然后用一个Servlet过滤器在服务器端发送响应,并使用自定义RequestTransport(最简单的就是简单地扩展DefaultRequestTransport)客户端以捕获的回应并据此采取行动。
  • 如果你只想保护几种方法,或者只允许特定用户访问某些方法(例如只允许管理员调用方法deleteThisThing),那么你有几种选择,但是在所有情况下你都不想如果用户没有被授权(例如,不显示删除这个东西按钮,如果用户不是管理员):
    • 在方法本身做它,扔一个例外情况(您可以使用RequestFactoryServlet.getThreadLocalRequest().getUserPrincipal()获取当前用户)
    • 使用ServiceLayerDecorator您可以覆盖invoke方法进行检查(可能是b ASED上的方法本身)的一些注解,并呼吁report(),以防未授权用户
+0

谢谢您的回答。是的,我只想保护一些方法,所以我正在使用方法本身。我是否正确,我不能用requestfactory抛出异常的子类型?我想在客户端发出请求以编辑已被删除的对象(客户端数据可能不总是100%最新)时发出404错误消息。如果方法需要授权而客户端没有登录,我想扔一个401. – 2012-01-04 17:35:06

+0

好的,这是有道理的。非常感谢你。 – 2012-01-05 13:58:50

+0

@ Thomas,我想“只保护几种方法,或只允许特定用户访问某些方法”,是否可以在servelt过滤器中执行此操作? – 2012-07-18 07:42:13