数据库中用户登录注册用户信息表怎么设计如何设计

用户登录

站内登录:用户信息+密码的验证形式;

用户名+密码,

手机+密码

站外授权:第三方登录,

其实它也是用户信息+密码的形式,

用户信息即第三方系统中的ID(第三方登录一定会给一个在他们系统中的唯一标识),密码即access_token,只不过是一种有使用时效定期修改的密码。

所以我们把它分离出了 用户基础信息表 + 用户授权信息表。

例如:

用户信息表 users

id               int(10)序号
nickname     varchar(20)昵称
headimg       varchar(255)头像

测试数据记录:

id|nickname|headimg
1|红中铭科技|xxx/headimg1.jpg
2|你好中国人工智能|xxx/headimg2.jpg

--------------------------------------------------

用户登录授权信息表 user_auths
id                int(10)用户序号(用户信息表-外键user_id)                                                       
login_type    tinyint(2)登录类型(3:phone,2:email,1:uname)或(4:wechat,5:weibo)
openid         varchar(50)用户的唯一标识(手机号号,邮箱地址,用户名或第三方应用的唯一标识)
login_token   varchar(600)登录凭证(站内的保存用户密码,站外的不保存或保存api接口的access_token凭证)

注意:数据库字段结构仅供参考,如有更好的建议和意见请留言!

测试数据记录:

------------------------------------------------------------------------------------

id|user_id|login_type|openid|login_token
1|1|username|hzminc|4819db06a014cd14==>md5-bit16abc(hzminc.com)
2|1|phone|15888888888|e640626043da7f22==>md5-bit16abc(15888888888)
3|2|wechat|jm03026|SgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46

------------------------------------------------------------------------------------

以上两条测试数据分析,两个测试用户,第一个用户可以绑定账户登录也可以绑定手机号登陆,即可实现多方式登陆,第二用户测是通过第三方微信接口获得站内登录授权。

流程说明:

程序流程与代码实现:用户使用 邮箱/用户名/手机号+密码登录验证的时,则先判断登录类型,若用户使用了手机号为登录类型,使用 SELECT * FROM user_auths WHERE type=’phone’ and openid=’15888888888’ 查询是否存在记录,如有,取出并判断数据库中login_token是否和登录提交登录表单数值相等,相符则通过授权验证,通过user_id查询用户信息表获取用户相应的基本信息资料。




你可能感兴趣的:(Mysql,数据库,数据表,用户表,数据表设计,数据库优化)