Django項目之配置JWT認證機制

在驗證完用戶的身份後(檢驗用戶名和密碼),需要向用戶簽發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保存的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章