在系統級項目開發時常常會遇到一個問題就是鑒權,身為一個前端來說可能我們距離鑒權可能比較遠,一般來說我們也只是去應用,并沒有對權限這一部分進行深入的理解。
什么是鑒權
鑒權:是指驗證用戶是否擁有訪問系統的權利。傳統的鑒權是通過密碼來驗證的。這種方式的前提是,每個獲得密碼的用戶都已經被授權。在建立用戶時,就為此用戶分配一個密碼,用戶的密碼可以由管理員指定,也可以由用戶自行申請。這種方式的弱點十分明顯:一旦密碼被偷或用戶遺失密碼,情況就會十分麻煩,需要管理員對用戶密碼進行重新修改,而修改密碼之前還要人工驗證用戶的合法身份。 -- 節選自百度百科
上述簡單扼要的說明了一下鑒權的概念,但是這也只是簡單的鑒權,也是項目中最最常見的及安全形式了,但是對于后端鑒權又是如何去做的,我們仍是一無所知,一般來說對于后端來說,鑒權最長見的方式分為三種:
Session/Cookie Token或Jwt OAuth這種授權方式是瀏覽器遵守http協議實現的基本授權方式,HTTP協議進行通信的過程中,HTTP協議定義了基本認證認證允許HTTP服務器對客戶端進行用戶身份證的方法。接下來就一一介紹一下這三種鑒權方式。
Session/Cookie
Cookie是一個非常具體的東西,指的就是瀏覽器里面能永久存儲的一種數據,僅僅是瀏覽器實現的一種數據存儲功能。Cookie由服務器生成,發送給瀏覽器,瀏覽器把Cookie以KV形式保存到某個目錄下的文本文件內,下一次請求同一網站時會把該Cookie發送給服務器。由于Cookie是存在客戶端上的,所以瀏覽器加入了一些限制確保Cookie不會被惡意使用,同時不會占據太多磁盤空間,所以每個域的Cookie數量是有限的。
Cookie.js
const Http = require("http");const app = Http.createServer((req,res) => { if(req.url === "/favicon.ico"){ return; }else{ res.setHeader("Set-Cookie","cx=Segmentfault"); res.end("hello cookie"); };});app.listen(3000);使用node Cookie.js運行上面代碼,等程序啟動后訪問http://localhost:3000/,就可以看到hello cookie字樣,這樣的話就代表該服務已經啟動了。若想查看到到我們所設置的Cookie,首先觀察一下在Network中Response Headers中,可以看到我們所寫的Set-Cookie屬性,當我們訪問http://localhost:3000/的時候,當瀏覽器接收到Set-Cookie這個屬性的時候,瀏覽器會根據其內部約定,并在其瀏覽器內部對其
新聞熱點
疑難解答
圖片精選