大家做 App 的时候最常见的就是会碰到用户登录注册系统。
1 、可以手机号注册登录。
2 、可以微信、 QQ 、微博第三方登录。
3 、用户可以绑定手机号,也可以绑定微信、 QQ 、微博,也就是可以相互绑定。
像这种情况,其实一个用户很有可能会产生 1-4 个帐号,但是了后面其实又可以把第三方登录的帐号绑定到任何一个其它帐号下。那么就会造成登录的时候到底使用哪一个用户 id 的情况。
大家对这种情况的用户表结构设计有什么好的解决方案?
1
xujif 2016-01-19 11:56:06 +08:00
user 表 social_account 表分开,用户名和手机号等登录的时候直接判断 user 表用户密码, social 登录的时候判断 social 表拉出 openid 后找对应的 user ,直接登录 user 。直接登录的时候都默认创建一个 user
|
2
arden OP 但是有一个问题,如果用户第一次登录的时候用的是 微信,这样应该会直接创建一个 user ,那后面他又用手机号 注册了一个帐号,要邦定微信,怎么办。
|
3
tabris17 2016-01-19 12:04:53 +08:00
user 表和 auth 表分开
|
4
chztv 2016-01-19 12:12:11 +08:00
@arden 你这个流程非正常。正常应该是微信登录后,去绑定手机。你用微信和手机各注册了一个账号,然后要互绑?只能提示该手机或者微信已经被注册……
|
5
liuxey 2016-01-19 12:12:47 +08:00
@arden 在微信登陆后发现 openid 没有对应 user 时需要提示用户是要创建一个新的帐号还是绑定已有,如果是默认创建,那么必然会有这个问题
|
7
tntjackie 2016-01-20 09:47:15 +08:00
@arden 这一类似的情况,如果要涉及到合并帐号,那应该做不到无损(因为手机帐号可能已经产生数据了)。假如手机号帐号和微信帐号绑定+合并,对于原有数据,要么合并,要么只保留一边的。
一定有不完美的情况发生 |
8
tntjackie 2016-01-20 09:51:15 +08:00
@chztv 你讲的其实是“逻辑正常”情况,然而 App 大多数时候用微信 /微博 SSO 登录还是为了 1.块, 2.帮助记录同步数据。如果 SSO 登录后又提示手机号注册,我想用户会崩溃的。
这一点,完全可以参考以前 Discuz 支持 QQ 登录后,丫的居然又要我完整注册,当时我就崩溃了 |
10
springz 2016-01-20 10:09:09 +08:00
就是说别管是怎么登陆的,和 user 表都没关系。
|