关于用户表结构设计(手机号、微信、QQ、微博等录注册和绑定)

2016-01-19 11:52:36 +08:00
 arden

大家做 App 的时候最常见的就是会碰到用户登录注册系统。
1 、可以手机号注册登录。
2 、可以微信、 QQ 、微博第三方登录。
3 、用户可以绑定手机号,也可以绑定微信、 QQ 、微博,也就是可以相互绑定。
像这种情况,其实一个用户很有可能会产生 1-4 个帐号,但是了后面其实又可以把第三方登录的帐号绑定到任何一个其它帐号下。那么就会造成登录的时候到底使用哪一个用户 id 的情况。
大家对这种情况的用户表结构设计有什么好的解决方案?

6974 次点击
所在节点    Node.js
10 条回复
xujif
2016-01-19 11:56:06 +08:00
user 表 social_account 表分开,用户名和手机号等登录的时候直接判断 user 表用户密码, social 登录的时候判断 social 表拉出 openid 后找对应的 user ,直接登录 user 。直接登录的时候都默认创建一个 user
arden
2016-01-19 12:00:31 +08:00
但是有一个问题,如果用户第一次登录的时候用的是 微信,这样应该会直接创建一个 user ,那后面他又用手机号 注册了一个帐号,要邦定微信,怎么办。
tabris17
2016-01-19 12:04:53 +08:00
user 表和 auth 表分开
chztv
2016-01-19 12:12:11 +08:00
@arden 你这个流程非正常。正常应该是微信登录后,去绑定手机。你用微信和手机各注册了一个账号,然后要互绑?只能提示该手机或者微信已经被注册……
liuxey
2016-01-19 12:12:47 +08:00
@arden 在微信登陆后发现 openid 没有对应 user 时需要提示用户是要创建一个新的帐号还是绑定已有,如果是默认创建,那么必然会有这个问题
chztv
2016-01-19 12:13:28 +08:00
@arden 最好就是用手机作为用户唯一判断,微信登录后,直接绑定手机
tntjackie
2016-01-20 09:47:15 +08:00
@arden 这一类似的情况,如果要涉及到合并帐号,那应该做不到无损(因为手机帐号可能已经产生数据了)。假如手机号帐号和微信帐号绑定+合并,对于原有数据,要么合并,要么只保留一边的。

一定有不完美的情况发生
tntjackie
2016-01-20 09:51:15 +08:00
@chztv 你讲的其实是“逻辑正常”情况,然而 App 大多数时候用微信 /微博 SSO 登录还是为了 1.块, 2.帮助记录同步数据。如果 SSO 登录后又提示手机号注册,我想用户会崩溃的。

这一点,完全可以参考以前 Discuz 支持 QQ 登录后,丫的居然又要我完整注册,当时我就崩溃了
springz
2016-01-20 10:08:28 +08:00
分开就行了, user 表单独维护,然后 auth 表去 对应 user @auth 说的很对。
springz
2016-01-20 10:09:09 +08:00
就是说别管是怎么登陆的,和 user 表都没关系。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251787

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX