【发布时间】:2018-10-30 23:52:27
【问题描述】:
我们有一个向用户手机号码发送验证码的 API。 API 是:
POST /api/users/verification/start/
{
"mobile": "9849735434"
}
以上 API 返回如下响应:
{
"isVerified": false
}
如果响应为 "isVerified": true,我们不会向用户的手机发送验证码。如果为假,我们发送一个代码。
目前,这一切都只适用于手机号码。我们希望使其基于(移动+设备)以使其更加安全。
为了实现这一点,我们在客户端计算机上存储了一个用户识别 cookie,我们计划在此基础上识别设备。应如何针对这一新要求修改 API?几种方法:
- 创建基于 (mobile + cookie) 工作的不同 API,并发送 isVerified: true,前提是两者都与我们数据库中存储的值匹配。
- 修改现有 API 以实现这一点 - 由于并不总是需要对特定于设备的 OTP 的支持,因此我们必须传递一些标志以使其仅基于移动设备的 OR(移动设备和 cookie)。
我们应该如何设计这样的API来基于移动和设备验证用户?
【问题讨论】:
-
似乎选项 2 最有意义,API 行为会根据 cookie 的存在而改变。
-
但我需要相同的 API 来根据客户的要求实现两者,即进行设备特定验证或仅进行基于数字的验证。我应该传递查询字符串来修改服务器端的这种行为吗?
-
cookie 的存在不足以确定用户应该进行设备验证吗?如果不是,它是一个可选参数,那么你可以有明确的 URL,但仍然使用相同的 API,例如
/api/users/verification/start/:mode所以.../start/mobile和.../start/device(如果有道理的话)。 API 可以从 URL 中提取模式并决定如何处理验证。
标签: rest api restful-authentication api-design