您好,登錄后才能下訂單哦!
這篇文章主要介紹“Session與Token身份驗證怎么實現(xiàn)”,在日常操作中,相信很多人在Session與Token身份驗證怎么實現(xiàn)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Session與Token身份驗證怎么實現(xiàn)”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
前言
當我們賬號密碼登陸以后,如何確保用戶認證是我們每一個 phper 都會遇到的問題,從最開始的 Session 到 Token ,讓我們帶著求知欲了解一下它。
Session 時代
Web 開發(fā)使用 Http 協(xié)議,HTTP 協(xié)議最初是匿名的,無狀態(tài)的請求 / 響應協(xié)議。這樣簡單的設計可以使 HTTP 協(xié)議專注于資源的傳輸(HTTP 是超文本傳輸協(xié)議); 隨著 WEB 的發(fā)展,業(yè)務需要確定客戶端的唯一性,引入 session 會話這個概念 。PHP 設置 session 整個過程如下,我們一步一步探究其中,服務器采用的 LNMP:
1. 發(fā)送請求。
請求 http://test.com:8080/index.php。
2. 開啟 session,并根據(jù) php.ini 配置保存 session。
首先我們在服務端代碼開啟 Session (因 php.ini 并沒有默認開啟,需程序開啟)
// 開啟sessionsession_start();// 設置session的值,稍后測試給該是否能取出$_SESSION['name'] = 'phper';echo 'weclome to session start!';
3. 查看本次請求,服務器響應頭攜帶 session_id 信息。
查看響應頭信息,就是在此處知道了 session_id = 689u7fiqejt70dujb9uk44eq79。因此才會有在步驟 2 中查看文件。
其中 path=/ 指的是 cookie 儲存瀏覽器的位置。
瀏覽器將 session_id 保存在客戶端本地,存在 cookie。如下圖所示:
4. 再次發(fā)送請求,請求頭攜帶 session_id 請求服務端
我們只需再次請求 http://test.com:8080/index.php,瀏覽器會在請求頭中攜帶著這個保存 session_id 的 cookie 去請求服務端。我們查看請求頭中即可看到:
5. 校驗 session_id 來確認客戶端身份
該操作是 php 的 session 機制來完成的。我們可以檢測以下看是否能取出剛才設置的 $_SESSION['name'] 就可驗證。
我們修改 index.php 代碼如下:
// 開啟sessionsession_start();// 設置session的值,稍后測試給該是否能取出echo $_SESSION['name'];
我們換一個 PostMan 模擬非法請求看是否能獲取到 $_SESSION['name'] 內(nèi)容?是無法獲取到信息。
嘗試,我們在 PostMan 中把前面的 cookie=689u7fiqejt70dujb9uk44eq79 攜帶到請求頭看是否能獲取到信息?是可以獲取到信息。
以上就是整個請求流程的介紹,我們可以看出來 session_id 信息是非常重要的。有關(guān) PHP 關(guān)于 Session 的配置項和使用說明
Token 時代
web2.0 時代的項目都采用 前后端分離。以 Token 這種方式的用戶認證更受大家歡迎。Token 可以解決哪些問題呢?
1.Token 完全由應用管理,所以它可以避開同源策略
2.Token 可以避免 CSRF 攻擊
3.Token 可以是無狀態(tài)的,可以在多個服務間共享
有狀態(tài) Token
有狀態(tài) Token 就是將 Token 的相關(guān)屬性 (eg:Token 過期時間等) 記錄在服務端。我們用圖表述頒發(fā) token,校驗 token,token 過期這三個場景。
頒發(fā) token
服務端校驗 token
token 過期
無狀態(tài) Token
無狀態(tài) Token 就是將 Toekn 的相關(guān)屬性(eg:Token 過期時間等)保存在 Token 中,JWT 就是一種無狀態(tài)的 Token。JWT 這里不詳細說明,我們主要看下幾個流程:
頒發(fā) token
服務端校驗 token
所以,有狀態(tài)的 Token 與 無狀態(tài)的 Token 面臨的問題就是 有狀態(tài)要占用服務器資源并且不利于分布式,微服務等架構(gòu)。有狀態(tài)剛好能解決這個問題,但是無狀態(tài)的 Token ,不存在 Token 黑白單這種需求
到此,關(guān)于“Session與Token身份驗證怎么實現(xiàn)”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。