用户登录模块在数据库模块也需要好好设计,不能因为每添加一种第三方认证就修改数据库表。
一.用户基本信息表User
UserID     avatar     name     ...
    2     url1     name1     -
    1     url2     name2     -
    3     url3     name3     -
用户基本信息表包含一些用户基本信息,主键是用户的 UserGuid ,是唯一的。
二.用户验证表User_auths
primary     UserID     identity_type     identify     credential     isFirstParty
        1             2     email      [email protected]     MD5MD5MD5     True
        2             2     account     accountName     accountPwMD5     True
        3             1     phone     12345678909     pwMD5     True
        4             2     wechat     wechatID     access_token & refresh_token     False
        5             3     weibo     weiboID     access_token & refresh_token     False
用户验证表,包含用户的各种登录方式,对列名解释: primaryKey :主键,唯一。 UserGuid :用户唯一标识,在表中不唯一。 identity_type :登录方式。 identify :该方式的账户名或ID。 isFirstParty :是否是第一方登录。 credential :对于第一方是密码,对于第三方是 access_token 和 refresh_token 。
很多现在的APP第三方登录成功获得用户基本资料后便丢弃第三方的 access_token 和 refresh_token ,其实如果为了真正的安全,还是需要保存下来,每次自动登录后通过第三方 access_token 和 refresh_token 来更新用户信息以及验证用户是否是真实身份。
UserGuid 不唯一,可能有多个账号对应同一个 UserGuid (第三方绑定到电话账号等等)。使用 isFirstParty 来标注是否是第一方,对于有些应用email/phone/accout的密码是同一个,修改的话就需要同时修改,需要通过标志位来定位这些第一方账号。

转载请注明来源网站:www.itxm.cn谢谢!

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Android技术特点(优缺点)详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。