遇到的一起生产事故

26年4月4日 星期六
812 字
5 分钟
这篇文章最后修改于 26年4月4日 星期六,部分内容可能已经不适用,如有疑问可联系作者。
AI 摘要

正在生成中...


起因

前几天上班,新同事来找我帮忙。

他负责的一位用户想用自己的账号中的 ApiKey,结果提示要绑定手机号;绑定手机号又一直失败,搞不定,于是来请教。

我一听,觉得是个小 case——用户之前可能已经注册过,直接按手机号查一下后台,应该就能找到对应的账号。便让同事去查。

同事查完反馈:后台只找到一个用户。

我第一反应是手机号绑定功能有 bug,打算直接帮用户重置一下。结果——改完手机号之后,用户那边炸了:账号不对了,原本的 VIP 消失不见,还有一年的会员没到期呢。

这下我有点慌。毕竟,这是我第一次碰上生产环境的事故。

冷静下来,我把同事和用户的聊天记录要过来翻了一遍。终于发现——漏了一个关键信息:用户的 ID。

同事反馈时只提了手机号,我也是照着手机号去查的,所以在线上数据库里只查到了一个人。

但仔细一看,我又发现了一个"很新的 ID"——查了一下,这个 ID 下没有任何手机号,只有一个 open_id(微信的)。

事情一下子清晰了。


原因

我们网站支持两种登录方式:

  • 手机号注册登录

  • 微信扫码登录

问题来了:这两种登录方式之间没有绑定关系。

也就是说,手机号注册的账号和微信扫码的账号,是两个独立账户。数据不互通,VIP 不共享,key 也是分开的。

这位用户的情况是这样的:

  1. 先用手机号注册了一个账号(账号 A),使用了一段时间,快要到期

  2. 后来又用微信扫码登录,网站自动为他创建了一个新账号(账号 B)

  3. 用户以为这是同一个账号,但实际是两个独立账户

  4. 当同事按手机号去查,只能查到账号 A,账号 B 完全不在查询范围内

这就是为什么后台只显示一个用户,而用户却发现自己的 VIP "消失"了——VIP 在账号 B 里,根本不在同事查到的那个账号里。


解决办法

事后我们讨论了两种解法:

强制绑定。 当用户用微信扫码登录后,系统自动检测是否已存在相同手机号或微信的关联账号,如有则提示用户主动合并两个账户,合并后数据汇总,保留两个登录入口。

登录时引导绑定。 用户使用任一方式登录后,若检测到账号未绑定其他登录方式,主动弹出引导页,提示用户"绑定后可使用两种方式登录同一账号"。

短期应急。 目前临时方案是用户在账号找回时遇到问题,可联系客服人工核实身份后,手动合并两个账号。


吐槽

前同事写的后端,怎么连这个基本的东西都没做……

不过目前尚且够用,也就先不改了。

文章标题:遇到的一起生产事故

文章作者:Lanke

文章链接:https://blog.blueke.top/posts/yu-dao-de-yi-qi-shi-gu[复制]

发布时间


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。

1 / 1