我正在尝试为游戏创建一个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。 –