1
A
回答
6
RequestFactory是RPC種協議,而不是一個REST之一。因此,首先,您不會發送「404未找到」:這意味着您的客戶端應用程序甚至不知道如何與服務器進行通信。
至於「401未授權」,那麼,它取決於。
-
在
- ,如果你要保護的訪問
RequestFactoryServlet
作爲一個整體,然後用一個Servlet過濾器在服務器端發送響應,並使用自定義RequestTransport
(最簡單的就是簡單地擴展DefaultRequestTransport
)客戶端以捕獲的迴應並據此採取行動。 - 如果你只想保護幾種方法,或者只允許特定用戶訪問某些方法(例如只允許管理員調用方法
deleteThisThing
),那麼你有幾種選擇,但是在所有情況下你都不想如果用戶沒有被授權(例如,不顯示刪除這個東西按鈕,如果用戶不是管理員):- 在方法本身做它,扔一個例外情況(您可以使用
RequestFactoryServlet.getThreadLocalRequest().getUserPrincipal()
獲取當前用戶) - 使用
ServiceLayerDecorator
您可以覆蓋invoke
方法進行檢查(可能是b ASED上的方法本身)的一些註解,並呼籲report()
,以防未授權用戶
- 在方法本身做它,扔一個例外情況(您可以使用
謝謝您的回答。是的,我只想保護一些方法,所以我正在使用方法本身。我是否正確,我不能用requestfactory拋出異常的子類型?我想在客戶端發出請求以編輯已被刪除的對象(客戶端數據可能不總是100%最新)時發出404錯誤消息。如果方法需要授權而客戶端沒有登錄,我想扔一個401. – 2012-01-04 17:35:06
好的,這是有道理的。非常感謝你。 – 2012-01-05 13:58:50
@ Thomas,我想「只保護幾種方法,或只允許特定用戶訪問某些方法」,是否可以在servelt過濾器中執行此操作? – 2012-07-18 07:42:13