個人博客設計記錄
一、使用的中間件
1. koa
2. koa-static 實現靜態資源服務器
3. koa-bodyparse 實現body的解析,主要是post請求數據的解析
4. koa-logger 控制臺日誌中間件
5. koa-session-minimal 適用於koa2 的session中間件,提供存儲介質的讀寫接口 ,但真正存儲的數據庫等配置依賴其他
6. koa-mysql-session 為koa-session-minimal中間件提供MySQL數據庫的session數據讀寫操作。
7. mysql 實現對mysql數據局的操作
二、 server目錄結構
codes存取請求返回狀態信息
db存取數據庫sql相關文件
middlewares存取路由的回調中間件,在其中調用services層方法,響應路由請求
services存取業務邏輯相關函數,調用model層方法,對傳入的參數數據和model層方法返回的數據,進行處理
models存取數據模型相關函數,接受參數,調用utils中的一些方法操作數據庫,返回數據,不對數據格式等進行處理,
utils存取了數據庫操作的一些封裝方法
index.js服務器端入口
serverConfig.js存取數據庫服務器相關配置,比如數據庫連接配置
三、session的驗證機制
原理過程:
session的生成過程:
對於第一次登陸請求,如果請求成功,則為其設置相應的session信息,比如登陸用戶為liyanlei,根據用戶名和密碼查詢到該用戶的基本信息,然後按照以下格式設置對應session_data:
{ isLogin: true, username: ‘liyanlei‘, userId: 1 }
然後以某種方式生成一個唯一的session_id,我們可以以鍵值對的形式理解,其中session_id為key,二session_data為value,將其存入數據庫的表中(當然我們也可以為其設置一個expires過期時間,不斷添加session信息,經過一段時間後,我們可以根據expires刪除過期session,來減少數據庫壓力)
最後我們將生成的session_id寫入到瀏覽器端的cookie中(比如說cookie中的USER_SID對應的值極為session_id),並為其設置生存期,當cookie的數據度過生存期後,便會失效。
根據sesson驗證登陸
瀏覽器發出各種請求時,會自動攜帶當前未cookie信息(肯定是未過期的),我們接受請求,獲取cookie中的USER_SID(也就是session_id),我們根據sesion_id查詢數據庫,在保存session信息的表中獲取到對應用戶的各種信息,也就是session_data,我們根據session_data可以判斷當前登錄用戶是誰,是否之前已經登錄過等等信息,具體要看我們在session_data中設置了什麽,大概流程就是如期,如果當前登錄用戶沒有已登錄,就是要驗證用戶名和密碼,通過後生成session,也就是上邊的session生成過程,依次循環。
使用koa-session-minimal,koa-mysql-session
對於生成session信息、將session存入cookie、數據庫中session的存儲和讀取這些操作,我們使用koa-session-minimal,koa-mysql-session這兩個中間件就可以實現,可以節省我們去封裝該功能函數的事件
-------------------------
個人博客設計記錄