Pru*_*lli 2 rest restful-url restful-architecture
我正在为忘记密码流设计 Restful API。在 Web 应用程序中使用的流程如下:
1) User enters user id
2) Application validates user id and sends verification token to user's email address
3) User will be asked for validation code and new password
4) User will enter validation code and new password
5) Application validates token and updates password.
Run Code Online (Sandbox Code Playgroud)
我很感激您就如何将此流程转换为 Restful API 的建议。
谢谢你,
拉杰
这是一个非常标准的设计,我想你可以找到很多资源,甚至可以在某些网站上重置自己的密码,看看它是如何工作的。
基础知识:
POST
在发送用户 ID 时发出请求。请注意,最好不要说用户 ID/电子邮件是否有效(以避免对现有用户 ID/电子邮件进行暴力检查)。此外,请确保在前一个令牌过期之前您不能请求另一个密码重置(以防止 DoS 攻击)。GET
对特定页面的请求,在该页面中用户会自动进行身份验证并可以输入新密码(再次:记住令牌上的到期时间)。POST
请求输入新密码,您再次检查令牌有效性,如果一切匹配,则更新密码。就POST
和GET
调用而言,可能是这样的:
POST https://www.yoursite.com/resetpassword
, 正文中包含用户 ID/电子邮件。不要将用户 ID/电子邮件作为查询或路径参数,特别是如果页面上有广告/横幅,因为他们可能能够获取该数据。
GET https://www.yoursite.com/password?token=dhs3541hpk43hokdsau9ef
令牌与重置密码的用户 ID/电子邮件相关联(您应该在数据库中拥有它)。此处首次验证令牌,用户可以在表单中输入新密码。请注意,这可以与您在用户更改密码时使用的表单相同,只是没有该Old password
字段。请注意,您永远不应在此页面上放置横幅/广告。这将是一个严重的安全风险。
POST https://www.yoursite.com/password?token=dhs3541hpk43hokdsau9ef
在正文中使用新密码。同样,不要在此页面上放置横幅/广告。服务器将再次检查令牌,如果匹配,则更新密码。然后服务器会将令牌标记为无效/过期。
归档时间: |
|
查看次数: |
4513 次 |
最近记录: |