深挖成熟产品架构设计——登录篇

我将在以下篇幅中着重介绍成熟的产品是如何设计登录接口的,此文不对使用何种登录工具做评论,万法无高下,工具无止境,好的设计才是凌驾工具之上的且能复用的

1.登录路接口有什么好讨论的?

乍一看,确实,登楼接口不就是输入username和pwd么,有什么好讨论的,这可能是个刚刚实习的毕业生的看法,但是工作过老码可能会呵呵一笑,太年轻了啊

我们思考下如下场景

  • APP登录和网页登录如何区分?
  • 网页登录区分Wechat登录和正常的H5登录?
  • 第三方合作导流,如何登录?
  • 特殊合作方免登陆如何实现?
  • 产品经理说我想统计下总共有多少机型登陆过?

再考虑安全性问题

  • 如何防止爆破?
  • 如何避免恶意用户?
  • 登录时效性?

2.登录业务逻辑流程

1.验证码校验
2.合法性校验(是否已注册用户等)
3.区分是哪类用户(APP, Wechat, H5, 导流等)
4.是否为新老用户
5.登录
6.登陆后业务逻辑(奖励、推送等)

3.登录接口设计

private static class Credential {
    String username;        // 手机号
    String captcha;         // 验证码
    String captchaToken;    // 验证码对应的凭证
    String deviceId;        // 设备ID
    String fraudMetrixToken;// 同盾token
    String inviteCode;      // 邀请码
    String channel;         // 渠道
}

此处captchaToken 非必须,每次初始化短信接口都会带入,防止用户盗刷或离开当前页面行为
短信验证码可限制发送次数防止爆破

4.免登陆类型的接口设计

校验登录凭证的过程中,需要有多套验证机制,方便且灵活

  • 有登录态直接放行
  • 没登录态,是否有token,验证token辅助登录
  • 是否为特殊渠道或特殊用户(Head插入特殊的字段标识),辅助登录

2,3多为渠道推广户或者特殊的用户准备,这些用户需要便捷的接入现有系统的业务,且输入用户名和密码不是很方便

5.补充

  • wechat登录需要同步客户的openId来绑定客户
  • 可以通过User-Agent来分析设备信息以及区分客户端信息,当然这个容易被篡改,不能作重要操作的判断依据

你可能感兴趣的:(深挖成熟产品架构设计——登录篇)