node 許可權管理 API登入 登入驗證 crypto加密外掛
阿新 • • 發佈:2020-11-14
一、API介面
現代網站專案、小程式、app等web開發普遍採用後臺介面+前端框架渲染的模式實現前後臺分離開發。
介面(application programing interface 應用程式介面):後臺開發人員提供的一個個URL(路由),前端開發人員通過ajax請求這個url,與後臺資料庫進行互動(對資料表進行增刪改查操作),最終按照指定的格式(json、xml、txt)返回給前端開發人員,再由前端開發人員完成頁面渲染工作。
介面設計一般規則:(code-data-msg)
示例:
{ "code": 200, "data": { "userid":1, "username":"老馬" }, "msg": "使用者登入成功" }
介面設計一般要有請求欄位說明、響應欄位說明、成功示例:
200 操作成功
201 操作不成功
207 資料不存在
208 引數不完整
209 資料已存在
403 未授權
401 請求的HTTP METHOD不支援,請檢查是否選擇了正確的POST/GET方式
500 伺服器發生未知錯誤
20001 使用者名稱密碼錯誤
20002 使用者名稱已經存在
20003 使用者名稱格式不正確
20004 使用者名稱不存在
40001 未經授權的客戶端資料
二、許可權設計-登入驗證
線上加密網站:https://tool.oschina.net/encrypt?type=2
一定要注意基本行業操守:不能將使用者的明文密碼直接存在資料庫表中,防止被“撞庫”。
2.1、 nodejs 的 crypto 模組
let crypto = require("crypto");
// let hash = crypto.createHash("md5");
// Hmac()需要兩個引數,引數一為加密演算法,引數二為金鑰
let hash = crypto.createHmac("md5","offcn.com");
hash.update("654321");
let password = hash.digest("hex");
2.2 登入功能實現思路:
實現流程:
1) 新增一個登入驗證功能,判斷是否存在cookie之類的登入憑證,如果沒有則提示跳轉到登入頁。如果有就放行。
2)使用者輸入賬號、密碼。使用ajax將賬號密碼傳送到伺服器端,伺服器端程式判斷使用者的賬號密碼是否正確(去資料庫的admin表中執行查詢操作)。如果正確返回給前端json,並且寫一個cookie。
步驟:
1) 在資料庫admin表中新增賬號和加密密碼
2)實現一個登入頁。
3)實現一個攔截功能,判斷否存在cookie,如果沒有則提示跳轉到登入頁。如果有就放行
4)當用戶輸入賬號密碼後,到資料庫查詢是否有一條記錄,如果有,設定cookie,傳送成功json。如果沒有則傳送失敗json
5)前端收到json後,根據code的值是否成功,然後渲染頁面。