现在几乎大部分的App
都支持使用多个第三方账号进行登录,如:微信、QQ、微博等,我们把此称为多账号统一登陆。而这些账号的表设计,流程设计至关重要,不然后续扩展性贼差。本文不提供任何代码实操,但是梳理一下博主根据我司账号模块的设计,提供思路,仅供参考。
一、 自建的登陆体系
1.1 手机号登陆注册
该设计的思路是每个手机号对应一个用户,手机号为必填项。
流程:
- 首先输入手机号,然后发送到服务端。先判断该手机号是否存在账号,如果没有,就会生成随机验证码,将手机号和验证码绑定到
Redis
中,并设置一定的过期时间(过期时间一般是5分钟,这就是我们一般手机验证码的有效期),最后将验证码通过短信发送给用户。 - 用户接收到验证码后,在界面填写验证码以及密码等基础信息,然后将这些数据发送服务端。服务端收到后,先判断在
Redis
里面这个手机号对应的验证码是否一致,,失败就返回错误码,成功就给用户创建一个账号和保存密码。 - 注册成功后,用户即可通过自己的
手机号+密码
进行登陆。
问题:
- 用户体验差,需要完成获取验证码,填写验证码/密码/用户名等诸多的信息完成注册,然后才能使用;
- 容易遗忘密码,遗忘后,只能通过忘记密码来重新设置密码。
1.2 优化注册登陆
该方案的思路是弱化密码的必填性,即无论用户是否注册过,可通过
手机号 + 验证码
直接进行登陆(保留手机号 + 密码
登录的方式)。
流程:
- 输入手机号,然后发送到服务端。服务端生成随机验证码,将手机号和验证码绑定到
Redis
中,并设置一定的过期时间(过期时间一般是5分钟,这就是我们一般手机验证码的有效期),最后将验证码通过短信发送给用户。 - 用户接收到验证码后,在界面只需填写收到的验证码,提交到服务端。服务端收到后,先判断在
Redis
里面这个手机号对应的验证码是否一致,失败就返