常用的认证机制之session认证和token认证
一、session認證
1、session認證的過程:
前端輸入用戶名和密碼進行登錄操作,后端拿到用戶名和密碼后,會把md5進行加密,加密之后,拿上加密后的密文到用戶表中查找密文是否一致,判斷用戶是否存在,如果用戶存在,則認證通過;認證成功后后端會生成session_id(后端會話當中的一個鍵,表中的一個key值),將session_id默認保存在會話表,當這條數據一旦記錄完之后,會將session_key數據作為session_id放到響應頭的set-cookie字段中;
瀏覽器接下來的操作為:將響應頭中的set-cookie字段的值取出來把它放到cookie中,下一次請求接口的時候,瀏覽器會自動將cookie中的sessionid字段傳給后端,而后端將sessionid取出來,去會話表中查找,如果一致登錄成功,否則登錄失敗;如果sessionid時間超時,也會登錄失敗。
如果沒有這種cookies機制,我們不管干嘛都得登錄;有cookies機制,只要我們有合法的sessionid,并且sessionid沒有過期就可以正常訪問。
會話id(session_id)是后端django生成的
2、session認證示意圖:
3、session認證機制的特點:
session保存在服務端,大量的用戶進行登錄操作,數據會存放大量的數據;會增加服務器開銷
分布式架構中,難以維持session會話同步
csrf攻擊風險
二、token認證
1、token認證的過程:
a、客戶端使用用戶名和密碼請求登錄
b、服務器收到請求,去驗證用戶名和密碼
c、驗證成功后,服務器會生成一個token,再把token發送給客戶端
d、客戶端收到token以后把它存儲起來,放到會話存儲或者本地存儲中(瀏覽器關掉后,存放在會話存儲中的內容被清空,本地存儲會永久存放,除非手動刪除本地存儲內容),
e、客戶端每次向服務端請求資源的時候需要帶著服務端返回來的token
f、服務端收到請求后,去驗證客戶端請求里面帶著的token,如果驗證通過,就向客戶端返回響應數據
2、token認證示意圖:
3、token認證機制的特點:
token保存在客戶端,不保存在數據庫;不會增加服務器開銷,性能更好
跨語言、跨平臺
拓展性強
鑒權性能高
cookie是專門保存身份信息的
總結
以上是生活随笔為你收集整理的常用的认证机制之session认证和token认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DRF_APIView之认证、授权配置
- 下一篇: python_函数相关的各种参数定义和传