中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分析Session和Token

發布時間:2021-11-05 14:39:21 來源:億速云 閱讀:142 作者:iii 欄目:web開發

這篇文章主要講解了“分析Session和Token”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“分析Session和Token”吧!

01.Cookie

是在客戶端(瀏覽器)保存用戶信息的一種機制;Cookie 由服務器生成,發送給瀏覽器,然后瀏覽器把 Cookie  以鍵值對的形式保存在客戶端的某個目錄下面;每種瀏覽器存儲大小會有一些差異,一般不超過 4KB;

當下一次請求的時候,會把 Cookie 發送給服務端,服務端對 Cookie 中的信息解析并驗證身份。

比如你入職一個公司,會給你辦一張工卡,上面有你的姓名、工號、部門等信息,你進入職場的時候,拿著工卡就可以進出。

但是 Cookie 是不可以跨域名使用的;就好像我拿著我們公司的工卡,去你們公司,保安肯定是不會放我進去的。

02.Session

保存在服務端,可以用于記錄客戶狀態;

比如我們經常會用 Session 保存客戶的基本信息、權限信息等;用戶第一次登錄之后,服務器就會創建一個 Session ,并將 SessionID  返回給瀏覽器,瀏覽器通常將其寫入到 Cookie 中,這種 Cookie 也叫做 SessionCookie ,瀏覽器再次訪問時,只需要拿著 SessionID  從服務端查找 Session 就可以了。

另外,這個 SessionID 不一定非要保存到 Cookie 中,只是對于瀏覽器客戶端,大家的默認做法是放在 Cookie 中。

03.Cookie 和 Session

關于 Cookie 和 Session 的區別,很多同學會回答:“Cookie 保存在客戶端,Session  保存在服務器端”,其實這樣的想法并不全面:

Cookie 是一個實際存在的的東西,一個很具體的東西,就是一段數據,而 Session 是一個抽象概念,或者叫做模式方法,它有很多實現方案;

比如 Tomcat 的實現方法:把狀態保存在服務端,然后生成一個 JSESSIONID 放在 Cookie 中;請求過來之后,拿著 JSESSIONID  在服務器端查詢并驗證狀態。

分析Session和Token

04.Token

當然,隨著用戶量的增加,保存在服務端的 Session  也不斷增加,這給服務端帶來了很大的壓力,并且如果程序是集群或分布式方式部署,同一個用戶第一次請求,訪問到了 A 服務器,創建了  Session,但是第二次請求卻發到了 B 服務器上,但是 B 服務器上并沒有之前創建的 Session;這就是分布式架構中的 Session  共享問題。

針對這個問題,我們可以進行服務器之間的 Session 同步,或者干脆把 Session 保存到第三方的組件中,例如保存到 Redis  中;但是不管是哪種方案,都讓 Session 變成了項目的負擔。

這時候,服務端就會想,如果 Session  不保存在我這里多好,第一次發送用戶名密碼給我,驗證通過后我給你一個通行證,以后客戶端每次請求的時候就帶著這個通行證;

這個通行證就是  token,當然這個驗證結果中需要包含客戶端信息,服務端需要知道請求是誰發過來的;還需要包含時間信息,因為通行證不可能永遠有效;通行證還不能是明文的,否則會有被截獲的風險。

HMAC-SHA1:

token = user_id|expiry_date|HMAC(user_id|expiry_date, k)

AES:

token = AES(user_id|expiry_date, x)

RSA:

token = RSA(user_id|expiry_date, private key)

分析Session和Token

05.SSO 單點登錄

有些公司會建設統一登錄系統(單點登錄),客戶端先去這個系統獲取 Token ,驗證通過再拿著這些Token去訪問其他系統;API Gateway  也可以提供類似的功能,我們公司就是這樣,客戶端接入的時候,先向網關獲取 Token,驗證通過了才能訪問被授權的接口,并且一段時間后要重新或者  Token。

分析Session和Token

06.Token 和 Session

對于 session 和 token ,對比它們沒有本質的區別,兩者都是加密后的字符串,都可以做身份驗證。當然 token 比 session  還是有一定區別的,比如 token 跨域更容易,token 更好控制等等,另外在授權場景下,token 比 session 有著更大的優勢;

比如,我開發一個網站,允許微信用戶登錄,使用 token 的流程大概是這樣的:

  • 登錄網站時,跳轉到微信登錄頁面;

  • 用戶輸入用戶名密碼登錄微信后,給我們一個 token;

  • 用戶拿著 token 就可以在我們的網站使用,而我們網站并不需要知道你微信的用戶名和密碼。

  • 總之,如果在同一個網站內,token 和 session 并沒有太大的區別,如果跨站使用,token 會更方便一些。

感謝各位的閱讀,以上就是“分析Session和Token”的內容了,經過本文的學習后,相信大家對分析Session和Token這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉善县| 民权县| 镇巴县| 许昌县| 武鸣县| 桐庐县| 格尔木市| 永州市| 阜新市| 葵青区| 临沭县| 麻阳| 博爱县| 页游| 康平县| 新化县| 钦州市| 广昌县| 广饶县| 南阳市| 武城县| 周宁县| 汝城县| 安远县| 株洲市| 曲阜市| 石首市| 虞城县| 武川县| 宁夏| 东宁县| 濮阳市| 通州市| 游戏| 化州市| 绥中县| 平罗县| 开封市| 乌鲁木齐县| 黔江区| 盐山县|