[Http] RESTful登錄失敗:返回401或自定義響應


Answers

Question

這是一個概念性的問題。

我有一個客戶端(移動)應用程序需要支持REST風格的Web服務的登錄操作。 因為Web服務是RESTful的,所以這相當於客戶端接受用戶的用戶名/密碼,用服務驗證用戶名/密碼,然後只記得發送所有後續請求的用戶名/密碼。

此Web服務中的所有其他響應均以JSON格式提供。

問題是,當我查詢Web服務只是為了找出給定的用戶名/密碼是否有效時,Web服務是否總是以JSON數據響應告訴我它成功或不成功,還是應該以良好的憑證和HTTP返回HTTP 200 401憑證不好。

我要問的原因是,有些其他RESTful服務使用401作為錯誤的憑據,即使您只是詢問憑據是否有效。 但是,我對401響應的理解是,它們代表了一個資源,如果沒有有效的證書,就不應該訪問這些資源。 但是登錄資源應該可以被任何人訪問,因為登錄資源的全部目的是告訴你你的憑證是否有效。

換句話說,在我看來,像這樣的一個請求:

myservice.com/this/is/a/user/action 

如果提供的證書不正確,應該返回401。 但是一個請求,如:

myservice.com/are/these/credentials/valid

不應該返回401,因為該特定的URL(請求)被授權有或沒有有效的憑證。

我想在這方面聽到一些合理的意見。 處理這個問題的標準方法是什麼,是處理這個邏輯上合適的標準方法?