我正在嘗試爲遊戲創建一個RESTful API。支持匿名和註冊用戶
該遊戲將支持匿名用戶(只想現在玩的用戶)和願意註冊的用戶。
我想要實現的是,雖然未註冊的用戶仍在使用同一臺計算機,但與其關聯的數據將會保留。我遇到了麻煩,並且對於那些選擇註冊的用戶也提供了適當的用戶支持。
GET users/create Users.create
將創建一個新的「匿名」的用戶,其將返回用戶(以及獨特的令牌可以通過識別)
POST users/register Users.register
將帶有可選的令牌(如果用戶以前匿名) ,一封電子郵件和一個密碼。它將創建一個新的註冊用戶(同樣的道理,如果提供了一個新註冊用戶 - 或新的註冊用戶)。
POST auth/login Auth.login
將採取的電子郵件地址和密碼,返回用戶如果成功
POST auth/authenticate
將採取獨特的標記,根據數據庫中是否存在令牌返回200/500。
基本上,每次調用服務器都需要這些獨特的令牌之一。我將能夠使用它來跟蹤與其關聯的用戶。
當我試圖爲註冊用戶實現某種「記住我」功能時,我真正感到困惑。如果註冊用戶有這些獨特的令牌之一可用,我可以使用它作爲記住我的令牌嗎?看起來這是一個糟糕的選擇,在安全方面,這可能會導致很多auth/authenticate
失敗。由於每次用戶在新計算機上登錄時都必須創建新的令牌。
我完全錯過了什麼嗎?整個過程似乎都有安全災難。這種行爲有沒有好的配方?
乾杯,
伊恩
我會讓別人回答主要問題,但我強烈建議您不要使用GET進行「創建」調用。 GET不應該有副作用或導致服務器端數據的任何更改。相反,使用POST創建用戶,併爲只讀請求保留GET。 –