本篇文章,主要講述了用戶登陸註冊的邏輯及如何用社交帳號登陸。git
僅供參考,具體狀況依據產品需求而定。github
開放平臺有哪些?
用戶註冊邏輯
參數segmentfault
驗證數據合法性。緩存
判斷`user`表是否存在該用戶名。 若存在,引導用戶登陸。 若不存在,執行註冊的程序。
用戶登陸邏輯
普通登陸:安全
參數:微信
判斷user
表中是否存在用戶數據。ui
社交帳號登陸(參數):加密
參數:spa
驗證數據的合法性。日誌
判斷`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='用戶登陸日誌表';