在進行用戶校驗時,有多種方法:
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會校驗用戶返回是否登錄的布爾值。