zoukankan      html  css  js  c++  java
  • [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表

  • 相关阅读:
    final关键字
    海思NB-IOT的SDK看门狗的使用
    IAR环境下编译CC2640入门开发
    股票操作记录180613(2)
    股票操作笔记18年6月13(1)
    PyYAML学习第一篇
    片仔癀犯过的错误
    2018年5月份片仔癀最佳演员奖
    2018-05-22两只垃圾基金南方产业活力000955和鹏华全球高收益债券000290
    linux c编程:网络编程
  • 原文地址:https://www.cnblogs.com/taoshihan/p/12436285.html
Copyright © 2011-2022 走看看