angular二、nodejs、redis、session前端
基於實現目標,咱們在進行以前先分析下需求。node
一、實現用戶登陸、驗證;
想實現這個需求,思路無非就是從前端用post將用戶名、密碼(MD5)傳到後端,後端再根據用戶id來查詢用戶,而後比較密碼,若是成功則返回true及對應的用戶信息,反之返回相應信息;redis
二、用戶信息持久化;
用戶信息持久化其實方法也不少,例如cookies、localStroage、sessionStorage、session、redis及mongodb等;下面簡單說明下他們各自的特色:mongodb
cookies: 最古老,基本全部瀏覽器支持。容量小,僅有4k,即一個域下最多可存大概20條記錄。可設置存活期,不安全,當服務器端多併發時,爲考慮減輕對服務器壓力,可將數據存放在cookies。同一域,同一瀏覽器內多窗口(標籤)間能夠共享,沒有設置存放期時關閉瀏覽器cookies消失;數據庫
localStroage:基於HTML5的本地存儲,容量大,可永久保存數據,直至用戶主動清空。同一瀏覽器多窗口(標籤)共享後端
sessionStorage:基於HTML5的本地存儲,容易較大。區別了localStroage的特色是生命週期僅存放於會話期間,關閉瀏覽器即消失。區別於cookies特色是,容易大,多窗口(標籤)間數據不共享。瀏覽器
session:基於服務器端的緩存,可設置存活期,容量大,安全性高。同一域內數據可共享,可根據頭部帶的cookie讀取相應的信息,考慮信息安全性,可以使用session.緩存
redis:是目前比較流行的運行於服務器端的緩存數據庫。容量大,安全性也高,可設置存活期,過時即消毀。安全
mongodb:做用也redis相似,都是緩存數據庫。服務器
三、用戶信息有無存活期;
這裏須要考慮的問題是當獲得了正確的用戶信息後,保存在哪裏。經過上面的分析,咱們很容易會選擇session,由於其安全性高。因此,咱們獲得一個方案是session+redis。將後端生成session信息並保存到redis中。
四、設計登陸方案
這裏我用兩張流程圖來表達登陸方案,圖1,登陸保存會話;圖2,刷新讀取會話;
後續