【问题标题】:RESTful API: How to model 'request new password'?RESTful API:如何建模“请求新密码”?
【发布时间】:2010-04-21 14:00:15
【问题描述】:

我正在为预订应用程序设计一个 RESTful API,很高兴看到我可以将应用程序的所有细节映射到 4 个 HTTP 方法。

/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/myself。

但现在我发现缺少一件事:如果我忘记了旧密码,可以申请新密码。知道如何添加这个吗?

【问题讨论】:

    标签: api rest


    【解决方案1】:

    由于该操作本质上是更新——将生成一个新密码——我将使用 POST 动词。除非您已经安排了一些基于共享机密的质询/响应协议,否则您必须找出另一种传递密码的方法,这些协议可用于在没有密码的情况下验证请求者。最简单的方法可能是通过电子邮件向记录帐户的用户发送一个链接,该链接可用于进行更改并显示他们的新密码。

    【讨论】:

    • POST - 听起来不错。用户将收到一封电子邮件,并且必须单击链接以请求新密码。
    【解决方案2】:

    假设通过请求一个新密码,您指的是系统分配一个新的临时密码然后允许用户重置它的典型操作,我会按照以下方式做一些事情:

    POST : /users/myself/resetPassword

    然后返回临时密码,向用户发送电子邮件或通过其他方法将新的临时密码传回给用户。

    【讨论】:

    • 你违反了 REST 原则 :)
    【解决方案3】:
    /users/({id}|myself)/forgottenpassword/, GET or PUT
    

    或者只是实现某种方式告诉用户访问该网站。

    【讨论】:

    • 将用户发送到网站是另一种选择,是的。
    • 这可能是最好的选择。
    • 这看起来一点也不完整,你有一个 RPC 调用。看起来您可以将忘记的密码输入用户...奇怪:) 恕我直言,如果 id 是用户应该记住的密钥,那么 GET /password/{id} 会更好。然后,您将根据您的安全逻辑返回密码或向用户电子邮件发送新密码。如果你坚持使用你的用户路由,你可以: GET /users/{id}/password
    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多