forked from wangziqi/gongxue-base
feat: add authenticated phone binding
This commit is contained in:
@@ -1055,6 +1055,27 @@ Authorization: Bearer <session.token>
|
||||
x-tenant-id: <tenantId>
|
||||
```
|
||||
|
||||
### 绑定或更换手机号
|
||||
|
||||
微信/QQ 登录后强制绑定手机号、个人中心更换手机号,都走同一个后端命令。前端先发送 `bind_phone` 用途验证码,再提交绑定:
|
||||
|
||||
```text
|
||||
POST /api/auth/sms/send
|
||||
body: { "phone": "13800000000", "purpose": "bind_phone" }
|
||||
|
||||
POST /api/auth/phone/bind
|
||||
Authorization: Bearer <session.token>
|
||||
body: { "phone": "13800000000", "code": "123456" }
|
||||
```
|
||||
|
||||
前端规则:
|
||||
|
||||
- 绑定接口必须带当前登录态,不能用 `x-user-id` 伪造用户。
|
||||
- 绑定接口只接受 `bind_phone` 验证码,不接受 `login` 验证码。
|
||||
- 新手机号如果已属于其它账号,后端返回 `PHONE_ALREADY_BOUND`。
|
||||
- 换绑成功后旧手机号登录身份会被移除;迁移期 `tk_` 其它设备 session 会被撤销,当前 session 继续可用。
|
||||
- 微信手机号授权后也应由后端 adapter 换取手机号,再复用同一类绑定命令;不要在页面里持久化明文手机号授权中间数据。
|
||||
|
||||
### 微信小程序登录
|
||||
|
||||
微信小程序端调用 `Taro.login()` 获取 code,然后交给后端:
|
||||
@@ -1087,7 +1108,7 @@ identity.unionId
|
||||
- 前端不接触 `appSecret`。
|
||||
- 前端不会拿到微信 `session_key`。
|
||||
- 如果登录前已经解析到推广码,登录成功后再调用 `/api/referral/bind` 完成首绑保护。
|
||||
- 手机号授权后续应走独立的“绑定手机号”接口,不要把微信手机号解密逻辑写在页面里。
|
||||
- 如果用户没有手机号,跳转到上面的“绑定或更换手机号”流程。
|
||||
|
||||
## 支付对接
|
||||
|
||||
|
||||
Reference in New Issue
Block a user