我已經使用Spring MVC 3.1創建了一個Web服務(RESTful),並添加了Spring安全性。其中一個端點是/users/{id}
,只應供管理員使用。但是,當且僅當檢索到的資源的用戶名與登錄用戶的用戶名相匹配時,/users/{id}
也可用於用戶。這可以通過使用@PostAuthorize註解來解決。HTTP 404是否應該在HTTP 403狀態碼之前?
現在,如果用戶訪問/users/999
(它不是登錄用戶),我應該返回HTTP狀態404還是HTTP狀態403?目前我正在做一個404(未找到),但應該是403,因爲用戶應該無法訪問它?
如果是這樣,那麼當你依賴@PostAutorize註解時,你會怎麼做?
@PostAuthorize("returnObject.username == principal.username and hasRole('ROLE_USER')")
所以這意味着我現在正在做正確的事情。 – LuckyLuke 2013-05-12 17:22:00
@LuckyLuke:爲了我的頭腦,是的。 – 2013-05-12 17:57:25
作爲一個筆記本,我會將其標記爲信息披露,因爲我可以枚舉賬戶。一般來說,作爲一名開發人員,我永遠不會爲任何事情(包括資源路徑)返回403的HTTP狀態代碼。 – Casey 2016-02-19 20:15:44