在進行使用者資訊認證之前,我們需要先知道兩個知識點:
(1):http是無狀態協議。所以,在進行資訊認證時,我們需要引入狀態機制,也就是session機制。
(2):cookie,與網域名稱有關,網域名稱不變,cookie不變。也就是說,在同一網域名稱下,請求各種資源都會攜帶cookie回後端。
下面來談談兩種認證方式:
1.session(會話)
這種方式依賴於cookie,我們也稱它為setcookie(種cookie)。
原理:當前端發出一次請求時,後端產生乙個session id,後端自動通過response返還給前端,也就是setcookie,使用者請求第二個頁面時,瀏覽器自動通過request攜帶cookie到後端進行比較。
以下步驟為操作過程:
擴充套件:由此引出乙個新的問題:登入不過期時,使用者關閉瀏覽器再次開啟,首頁面依然保持登入狀態。如何判斷使用者是否登陸過?
以下提供兩種解決方案:
第一種:通過判斷cookie(sessionid)是否存在。缺點:sessionid不攜帶使用者資訊。2. 生成token(基於jwt(jsonwebtoken)的認證機制)第二種:再次請求後端api,判斷req.session.username是否存在,返回給前端乙個資訊。
(1)生成token
方法一:對稱加密:sh256(2)後端向前端傳輸資料的方式有四種:方法二:非對稱加密:rs256,私鑰加密,公鑰解密。(github的傳輸就是採用非對稱加密)
要注意最後一種傳輸方式,前端接收時,如果採用jquery中ajax的success:(data,status,xhr)=>{}中的方法來獲取response的頭部資訊會有坑,最好使用.then()方法。
(3)傳遞到前端,利用localstorage.setitem()儲存token。token並不儲存在伺服器端,所以刪除的時候要記得,從**儲存,就在**刪除。
(4)使用者發起請求時,前端要想後端傳遞token,可使用jquery中$.ajax中的header配置。後端用req.header()取出token,進行驗證,利用cert(簽名)進行解密。
使用者認證 基於jwt和session的區別和優缺點
背景知識 authentication和authorization的區別 authentication 使用者認證,指的是驗證使用者的身份,例如你希望以小a的身份登入,那麼應用程式需要通過使用者名稱和密碼確認你真的是小a。由於http協議是無狀態的,每一次請求都無狀態。當乙個使用者通過使用者名稱和密...
7 使用者認證資訊
4.使用者認證資訊 1.stos 使用者名稱 2.使用者密碼 這代表該使用者已被凍結 是使用者的帳號處於加密狀態,就是還沒有被用過,設定密碼之後就不會出現!但會出現一串加密字元 3.17895 碼最後一次被更改的時間,此時間計算是由1970 1 1開始的,說白了,就是今日距離1970 1 1的時間 ...
用Session儲存使用者資訊
由於http協議的無狀態,這就使得無法在兩個不同的請求之間共享資訊,如無法記錄 當前訪問者 的資訊。雖然在登入過程已經驗證了使用者的使用者名稱與密碼是正確的,但是當使用者跳轉到其他頁面時,從登入頁面獲得的使用者資訊全部丟失,這是使用者不希望發生的。同時,要求使用者進入每乙個頁面時都要輸入使用者名稱與...