我需要帮助来创建REST端点.有几个活动:
要更改电子邮件,需要3个URL请求:
/ changeemail:这里一次性密码(OTP)被发送到用户的手机
/ users/email:用户从上一步发送一次性密码,系统将电子邮件发送给新用户点击电子邮件激活链接
/ activateemail:用户单击新电子邮件收件箱中的链接,服务器更新新电子邮件
要更改密码:
同样,还有其他端点可以更改配置文件(字段包括bday,名字和姓氏)
在线阅读后我相信我的系统只users作为资源 - >所以更新属性我正在考虑使用单个PATCH更改电子邮件和更改密码以及操作字段之类的东西,所以上面两个功能看起来像:
要更改电子邮件:
更改密码:
我将只有一个端点用于上述所有操作(在nodejs中):
app.patch('/users', function (req, res) {
// depending upon the operation I delegate it to the respective method
if (req.body.operation === 'sendOTPForEmailChange') {
callMethodA();
} else if (req.body.operation === 'sendEmailActivationLink') {
callMethodB();
} else if (req.body.operation === 'activateEmail') {
callMethodC();
} else if (req.body.operation === 'changePassword') {
callMethodC();
} else sendReplyError();
});
Run Code Online (Sandbox Code Playgroud)
这听起来不错吗?如果没有,有人可以帮我组建changeemail和changepassword的端点.
答案:
我最终决定在HTTP Request Body中使用带有操作字段的PATCH来指示必须执行的操作.由于我只修改了资源的单个字段,因此我使用了PATCH方法.另外,我想避免在URI中使用Verbs,因此使用'operation'字段看起来更好.
我在做出这个决定时使用了一些参考文献
Mark Nottingham的博客链接文章
最后是JSON MERGE PATCH 链接RFC
恕我直言,如果您想实现自己的用户帐户系统,哈希安全性是必读的。
应始终考虑双因素识别,至少作为一项选择加入功能。您将如何将其集成到您的登录方案中?
身份联合怎么样?您的用户可以利用他们的社交帐户来使用您的应用程序吗?
快速浏览一下 Google 就得到了这个 和 这个,还有这个。
除非您有充分的理由自己动手,否则我会花时间集成一个由强大社区支持的解决方案,以实现项目的实用性方面,并将时间集中在为您的客户实现业务价值上。
注意:我的文字太长,无法发表评论
| 归档时间: |
|
| 查看次数: |
779 次 |
| 最近记录: |