2012-01-04 100 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