淺談多個社交賬號的登錄註冊設計

本篇文章,主要講述了用戶登錄註冊的邏輯及如何用社交賬號登錄。

僅供參考,具體情況依據產品需求而定。

開放平臺有哪些?

  • 微信
  • Sina微博
  • QQ
  • 163
  • 360
  • 豆瓣
  • 淘寶
  • github
  • 開源中國
  • 其他...

用戶註冊邏輯

  • 參數

    • (username)用戶名
    • (password)密碼
    • (platform_id)平臺ID
    • (code)驗證碼
  • 驗證數據合法性。

    判斷user表是否存在該用戶名。

    若存在,引導用戶登錄。

    若不存在,執行註冊的程序。

  • 密碼加密規則 (參考:加密技術與密鑰安全管理)

用戶登錄邏輯

  • 普通登錄:

    • 參數:

      • (username)用戶名
      • (password)密碼
      • (platform_id)平臺ID
      • (code)驗證碼
    • 驗證數據的合法性。

      判斷user表中是否存在用戶數據。

    • 記錄日誌。

  • 社交賬號登錄(參數):

    • 參數:

      • (platform_id)平臺ID
      • (channel_id)渠道ID
      • (open_id) 社交平臺開放ID
    • 驗證數據的合法性。

      判斷user_social表中是否存在該openid的數據。

      若存在,直接進行登錄。

      若不存在,將數據,存儲到user_social 表,引導用戶綁定本站賬號。

      若本站已存在賬號,直接關聯賬號即可。

      若本站不存在賬號,引導用戶註冊,成功後與當前openid關聯即可。

    • 記錄日誌

數據表結構

  • 用戶賬號表

    CREATE TABLE `user` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
      `username` varchar(80) NOT NULL DEFAULT '' COMMENT '用戶名',
      `password` char(60) NOT NULL DEFAULT '' COMMENT '密碼',
      `platform_id` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '平臺ID(1=PC,2=Wap,3=Android,4=iOS)',
      `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶賬號表';
  • 用戶社交賬號表

    CREATE TABLE `user_social` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
      `uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用戶ID',
      `open_id` varchar(120) NOT NULL DEFAULT '' COMMENT '社交平臺開放ID',
      `platform_id` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '平臺ID(1=PC,2=Wap,3=Android,4=iOS)',
      `channel_id` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '渠道ID(1=QQ,2=SinaWeibo,3=Weixin)',
      `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
      `update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新時間',
      PRIMARY KEY (`id`),
      KEY `idx_uid` (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶社交賬號表';
  • 用戶登錄日誌表

    CREATE TABLE `user_login_log` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
      `uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用戶ID',
      `platform_id` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '平臺ID(1=PC,2=Wap,3=Android,4=iOS)',
      `channel_id` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '渠道ID(1=QQ,2=SinaWeibo,3=Weixin)',
      `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間'
      PRIMARY KEY (`id`),
      KEY `idx_uid` (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶登錄日誌表';

Thanks ~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章