1. 程式人生 > >個人博客設計記錄

個人博客設計記錄

name 設置 blog 成功 圖片 響應 使用 失效 mod

一、使用的中間件

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這兩個中間件就可以實現,可以節省我們去封裝該功能函數的事件

-------------------------

個人博客設計記錄