在驗證完用戶的身份後(檢驗用戶名和密碼),需要向用戶簽發JWT,在需要用到用戶身份信息的時候,還需覈驗用戶的JWT。
關於簽發和核驗JWT,我們可以使用Django REST framework JWT擴展來完成。
文檔網站 http://getblimp.github.io/django-rest-framework-jwt/
安裝配置
安裝
pip install djangorestframework-jwt
配置
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
}
JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
}
- JWT_EXPIRATION_DELTA 指明token的有效期
使用
Django REST framework JWT 擴展的說明文檔中提供了手動簽發JWT的方法
from rest_framework_jwt.settings import api_settings
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
前端保存token
我們可以將JWT保存在cookie中,也可以保存在瀏覽器的本地存儲裏,我們保存在瀏覽器本地存儲中
瀏覽器的本地存儲提供了sessionStorage 和 localStorage 兩種:
- sessionStorage 瀏覽器關閉即失效
- localStorage 長期有效
使用方法
sessionStorage.變量名 = 變量值 // 保存數據
sessionStorage.變量名 // 讀取數據
sessionStorage.clear() // 清除所有sessionStorage保存的數據
localStorage.變量名 = 變量值 // 保存數據
localStorage.變量名 // 讀取數據
localStorage.clear() // 清除所有localStorage保存的數據