php系统的登陆与注册开发设计,[PHP] 设计一个可扩展的用户登陆系统

1. 大部分互联网业务中 , 用户登陆功能是非常常见的模块 , 针对登陆功能的数据库设计常见的是下面这样的

User表

id? ? username? ?password? ... 其他用户信息

查询时的逻辑类似下面

pass=query("select * from user where username='xxxx'")

if(password==pass){

? ? //登陆成功

}

这样的结构基本可以满足功能需要 , 但是当需要增加手机登陆 ,邮箱登陆 , 第三方登陆时 ,表结构该怎么设计呢?

可能有人会想到在user表里增加字段 , email? ,? telphone , weixin_id ...

这样的设计导致增加一种登陆方式就要增加字段 , user表的字段过多 , 可扩展性非常差。

?

2. 针对需要第三方登陆的系统 , 最好是按照业务垂直拆分出分表 。把user表中跟认证相关的业务拆分出来 ,变成独立的表 ,这样既能减小user表的容量 ,又能方便的进行扩展字段 , 例如下面的表

local_auth表

id? ?user_id? ?username? telphone? ?email? ?password

third_oauth表

id? ?user_id? oauth_id? ? oauth_type? ? ?refresh_token

user表

id? ? age? ?sex? ?birth? ....

上面把本地认证表和第三方oauth认证表与user信息表进行了拆分? ,? 这样如果是用手机? ,邮箱 , 用户名 登陆,就去查询local_auth表 ,再去查询user表

如果是第三方认证登陆 , 就根据第三方的oauth_id ,认证查询third_oauth表 ,不同的第三方根据oauth_type进行区分 , 再去查询user表

?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值