1. 程式人生 > >前後端分離模式下,如何跟蹤使用者狀態?

前後端分離模式下,如何跟蹤使用者狀態?

在前後端分離開發模式下,前端採用Vue等MVVM框架,後端負責提供RESTful風格的介面。區別於傳統開發模式下使用session來跟蹤使用者登入狀態,前後端分離模式可採用讀取cookie的方式來驗證使用者登入,每次使用者訪問任意URL,都會對cookie進行驗證。
這種方式的好處是保證伺服器處理任意的URL都是無狀態的,可以擴充套件到多臺伺服器。
由於登入成功後是由伺服器生成一個cookie傳送給瀏覽器,所以,要保證這個cookie不會被客戶端偽造出來。實現防偽造cookie的關鍵是通過一個單向加密演算法,如SHA1。
舉例如下:
當用戶輸入了正確的口令登入成功後,伺服器可以從資料庫取到使用者的id,並按照如下方式計算出一個字串:

"使用者id" + "過期時間" + SHA1("使用者id" + "使用者口令" + "過期時間" + "SecretKey")

當瀏覽器傳送cookie到伺服器端後,伺服器可以拿到的資訊包括:使用者id、過期時間、SHA1值。
如果未到過期時間,伺服器就根據使用者id查詢使用者口令,並計算:SHA1("使用者id" + "使用者口令" + "過期時間" + "SecretKey"),並與瀏覽器cookie中的雜湊進行比較,如果相等,則說明使用者已登入,否則,cookie就是偽造的。
這個演算法的關鍵在於SHA1是一種單向演算法,即可以通過原始字串計算出SHA1結果,但無法通過SHA1結果反推出原始字串。