以github登錄認證為例,說明如何通過mvc三部分的配合,實現這個功能。
要實現的功能:首頁判斷用戶是否登錄,如果沒有登錄,顯示登錄界面,用戶點擊按鈕進入github登錄驗證,並保存用戶的信息,登錄狀態;如果已經登錄,則顯示用戶的個人信息。
分析:用戶github認證成功后,需要將用戶的信息存入數據庫中,便於增刪查改,用戶的登錄狀態存入緩存中(這里采用session)。
下面我們開始建數據庫和數據表。
github驗證成功后,用戶的信息如下:
mysql的安裝和使用方法這里就不在詳細說明了,根據thinkjs的規范,數據表要有個統一的前綴,這里就簡單取個'gl_'(github log in縮寫‘’)。新建一個數據庫githublog,在這個數據庫中新建一個數據表gl_user,存儲數據信息,表結構如下。
DROP TABLE IF EXISTS `gl_user`;
CREATE TABLE `gl_user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(256) NOT NULL DEFAULT '' COMMENT '用戶名稱',
`nickname` varchar(11) NOT NULL DEFAULT '' COMMENT '用戶昵稱',
`gid` varchar(256) NOT NULL DEFAULT '' COMMENT '第三方社交帳號ID',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創建時間',
`email` varchar(256) DEFAULT NULL COMMENT '用戶郵箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOCK TABLES `gl_user` WRITE;
name,email分別對應着獲取到的login和email值,gid作為用戶唯一標識使用‘github_’加上所獲取到的id。用戶認證成功后,可以設置昵稱nickname,修改郵箱email。
數據庫創建完成后,要在thinkjs項目中進行配置src/common/config/db.js文件
使用本地數據庫的話host就是127.0.0.1,port默認是3306,database就是剛剛創建的githublog,user和password是mysql的用戶名和密碼,前綴是githublog數據庫下數據表的前綴‘gl_’。(https://thinkjs.org/zh-cn/doc/2.2/model_config.html)
配置好之后,創建對應數據表的模型,參照https://thinkjs.org/zh-cn/doc/2.2/model_intro.html創建,模型名對應去掉前綴的數據表名,可以在對應的模型文件中寫一些對數據表增刪查改的方法。