本篇文章,主要講述了用戶登錄註冊的邏輯及如何用社交賬號登錄。
僅供參考,具體情況依據產品需求而定。
開放平臺有哪些?
- 微信
- Sina微博
- 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 ~