用户登录模块在数据库模块也需要好好设计,不能因为每添加一种第三方认证就修改数据库表。
一.用户基本信息表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的密码是同一个,修改的话就需要同时修改,需要通过标志位来定位这些第一方账号。
转载请注明来源网站:blog.ytso.com谢谢!
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/6143.html