Django rest framwork獲取token值和前端token攜帶方法
阿新 • • 發佈:2018-11-19
在進行使用者校驗時,有多種方法:
1、Cookie:預設可以通過指令碼檔案獲取,容易遭受XSS攻擊(跨站指令碼攻擊);所有瀏覽器會讓使用者自願選擇是否儲存至cookie。
2、Session:session會在一定時間內儲存在伺服器上;當訪問增多,會比較佔用你伺服器的效能。
3、Token:在登入時會發放Token,類似於“身份證”,在一些傳送要許可權校驗的請求時,在請求頭帶上Token即可通過驗證。特點:方便、安全。
在Django rest framwork中 獲取token的方式:
首先需要在python manage.py 依次 makemigrations 和migrate ,
此做法是需要將django的後臺管理操作的對應表遷移到資料庫(mysql的遷移表如下):
其中 authtoken_token會給auth_user中的使用者登入時發一個獨有的Token,
前端登入時,需要請求Token的url為:
需要注意的是一定是POST請求,當然了 賬號密碼一定要對,需要在auth_user中相對應資料;
在前端使用sessionStorage將Token儲存下來:
登出時sessionStorage.removeItem('token'),清空token。
使用ajax提交時:
Token放在ajax的請求頭 headers中 且需要宣告如下圖
在後臺進行登入判斷的具體程式碼:
request.user.is_authenticated會校驗使用者返回是否登入的布林值。