V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
arden
V2EX  ›  Node.js

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

  •  1
     
  •   arden · 2016-01-19 11:52:36 +08:00 · 6998 次点击
    这是一个创建于 3257 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    这一点,完全可以参考以前 Discuz 支持 QQ 登录后,丫的居然又要我完整注册,当时我就崩溃了
    springz
        9
    springz  
       2016-01-20 10:08:28 +08:00
    分开就行了, user 表单独维护,然后 auth 表去 对应 user @auth 说的很对。
    springz
        10
    springz  
       2016-01-20 10:09:09 +08:00
    就是说别管是怎么登陆的,和 user 表都没关系。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1285 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.