2010-04-21 42 views
4

我正在爲預訂應用程序設計一個RESTful API,很高興看到我可以將應用程序的所有細節映射到4個HTTP方法。RESTful API:如何建立「請求新密碼」的模型?

/users - GET, POST 
/users/({id}|myself) - GET, POST, PUT, DELETE 
/users/({id}|myself)/bookings - GET, POST 
/users/({id}|myself)/bookings/{id} - GET, POST, PUT, DELETE 

示例:更新我自己的用戶使用PUT到/ users /我。

但是現在我發現有一樣東西丟失了:如果我忘記了舊密碼,可能會要求一個新密碼。任何想法如何我可以添加此?

回答

1
/users/({id}|myself)/forgottenpassword/, GET or PUT 

或只是實施某種方式告訴用戶去網站。

+0

發送用戶到網站是替代,是的。 – janpio 2010-04-21 14:22:17

+0

這可能是最好的選擇。 – UnkwnTech 2010-04-21 14:37:36

+0

這看起來並不充分,你有一個RPC調用。它看起來像你可以把一個忘記密碼給用戶......怪異的:) Imho如果id是用戶應該記住的密鑰,那麼GET/password/{id}會更好。 然後,您將根據您的安全邏輯或者只是返回密碼或者可能發送一個新的密碼給用戶的電子郵件。 如果您堅持使用您的用戶路線,您可以: GET/users/{id}/password – Janus007 2013-06-28 08:32:25

2

請求一個新的密碼假設,你指的是系統的典型動作分配一個新的臨時密碼,然後允許用戶重新設置的話,我會沿着線做somethign:

POST:/users/myself/resetPassword

然後返回臨時密碼,向用戶發送電子郵件或其他一些將新臨時密碼傳回給用戶的方法。

+0

您違反了REST原則:) – Janus007 2013-06-28 08:34:35

3

由於動作基本上是一個更新 - 將生成一個新的密碼 - 我會使用POST動詞。除非您已經根據共享密鑰安排了一些質詢/響應協議,否則您將不得不找出提供密碼的替代方法,這些協議可用於在沒有密碼的情況下驗證請求者。最簡單的方法可能是通過鏈接將記錄中的用戶通過電子郵件發送給用戶,該鏈接可用於實現更改並顯示新密碼。

+0

POST - 聽起來不錯。用戶將被髮送一封電子郵件,並且必須點擊鏈接才能申請新密碼。 – janpio 2010-04-21 14:22:54