文章目录
- 后端有关说明
- 前端有关说明
- 接口设计
- 小程序注册/登录接口
- APP 注册/登录接口
- PC Web 端的注册/登录接口
- 小程序注册/登录序列图
- 校验 token
后端有关说明
-
登录和注册的逻辑要独立抽取写成2个接口:注册接口、登录接口
-
小程序、APP、PC端的登录接口和注册接口要分开,因为不同端的注册和登录,业务流程会有差别,为了避免麻烦,建议分开写
-
APP 和 小程序 的登录 token 不需要时效性,PC端的登录 token 需要时效性
所以存储token表字段如下:
字段名称 | 类型 | 备注 |
---|---|---|
token串 | varchar | |
时效类型 | tinyint | 0 表示无时效性,1 表示有时效性 |
用户ID | integer unsigned | |
创建时间 | datetime | 对有时效性的 token 而言,可以理解为 token 的有效期开始时间 |
后期PC端如何判断token的时效,每次请求时拿着 token 去数据库取创建时间(可以理解为 token 的有效起始时间),然后将当前系统时间减去 token 的创建时间
- 注册成功后,后端自行调登录接口,不要让前端调登录接口
前端有关说明
-
需要用户信息的接口,需要传token,但是前端调此类接口,token也可以不传或者传空值
-
首次打开小程序,会按顺序做以下几件事:
(1)获取用户的定位信息
(2)发起登录请求
(3)请求首页数据 -
用户进入其他内页后再返回首页,获取页面缓存的数据
-
登录成功后返回首页才会请求新的首页数据
接口设计
小程序注册/登录接口
- 小程序登录接口说明
小程序登录接口传参:手机号、OpenID、UnionID、code(微信登录凭证),返回:token、OpenID、UnionID、用户信息(昵称、头像、签名、区域、性别)
后端获取code,然后通过code获取OpenID,然后再查下该OpenID是否存在,存在则生成token,然后把token和user_id保存在数据库中,接着把token、OpenID、用户信息(昵称、头像、签名、区域、性别)返回;如果不存在说明未注册,也要将此OpenID返回给前端,用户注册时需要用到。
- 小程序注册接口说明
小程序注册接口传参:昵称、头像、区域、性别、手机号、encryptedData、iv、code、OpenID、UnionID,返回注册成功与否message。
如果获取不到UnionID、手机号码,后端用 encryptedData、iv以及 session_key 解密出 UnionID 和手机号码,再一起保存在用户表中。
APP 注册/登录接口
暂无
PC Web 端的注册/登录接口
暂无
小程序注册/登录序列图
校验 token
-
接口获取到 token,则调“校验 token”方法(例如:拦截器),此方法拿着 token 去数据库查询,如果查询不到,则告诉前端 token 无效,需要重新登录;如果查询到 token,则获取到 user_id,然后凭 user_id 获取请求数据返回给前端。
-
接口无法获取到 token,则告诉前端需要登录。