前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[PHP] 设计一个可扩展的用户登陆系统

[PHP] 设计一个可扩展的用户登陆系统

作者头像
唯一Chat
发布2020-03-19 14:31:44
4900
发布2020-03-19 14:31:44
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

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表

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档