欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django使用JWT保存用戶登錄信息

 更新時間:2020年04月22日 08:52:58   作者:苦瓜爆炒牛肉  
這篇文章主要介紹了Django使用jwt獲取用戶信息的實(shí)現(xiàn)方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

在使用前必須弄明白JWT的相關(guān)知識,可以看我的另一篇博文:http://www.dbjr.com.cn/article/166843.htm

什么是JWT?

Json web token (JWT), 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標(biāo)準(zhǔn)((RFC 7519).該token被設(shè)計(jì)為緊湊且安全的,特別適用于分布式站點(diǎn)的單點(diǎn)登錄(SSO)場景。JWT的聲明一般被用來在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶身份信息,以便于從資源服務(wù)器獲取資源,也可以增加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認(rèn)證,也可被加密。

JWT最普遍的一個作用就是用來保存用戶的登錄信息。

JWT的流程

1.簽發(fā)JWT

在用戶正確輸入賬號密碼成功登錄后,服務(wù)端就會簽發(fā)JWT。

django使用第三方庫djangorestframework-jwt生成JWT,所以先安裝第三方包。

pip install djangorestframework-jwt

然后需要在django的配置上增加:

REST_FRAMEWORK = {
 'DEFAULT_AUTHENTICATION_CLASSES': (
  'rest_framework_jwt.authentication.JSONWebTokenAuthentication', # jwt認(rèn)證
  'rest_framework.authentication.SessionAuthentication',    # 管理后臺使用
  'rest_framework.authentication.BasicAuthentication',
 ),
 ...
}

JWT_AUTH = { # 導(dǎo)包: import datetime
 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), # jwt有效時間
}

然后就可以簽發(fā)JWT了。

from rest_framework_jwt.settings import api_settings

jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER # 生payload部分的方法
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER # 生成jwt的方法

# {'exp': xxx, 'email': '', 'user_id': 1, 'username': 'admin'}
# user:登錄的用戶對象
payload = jwt_payload_handler(user) # 生成payload, 得到字典
token = jwt_encode_handler(payload) # 生成jwt字符串

生成之后,通過JSON字符串的方式返回給前端。

2.前端保存JWT

前端有兩種方式儲存數(shù)據(jù),分別是localStorage 和 sessionStorage。

HTML5提供了兩種在客戶端存儲數(shù)據(jù)的新方法:
- localStorage - 永久數(shù)據(jù)存儲; 不同頁面數(shù)據(jù)共享
- sessionStorage - 臨時存儲,關(guān)閉頁面或?yàn)g覽器后會被清除; (讀取sessionStorage的數(shù)據(jù)時,僅當(dāng)前頁面(窗口)有效,但是JWT toekn會保存直到瀏覽器關(guān)閉)

sessionStorage.key = val // 保存數(shù)據(jù)
sessionStorage.key // 讀取數(shù)據(jù)
sessionStorage.clear() // 清除所有sessionStorage保存的數(shù)據(jù)
sessionStorage.removeItem('key');

localStorage.key = val // 保存數(shù)據(jù)
localStorage.key // 讀取數(shù)據(jù)
localStorage.clear() // 清除所有l(wèi)ocalStorage保存的數(shù)據(jù)
localStorage.removeItem('key');

3.前端發(fā)送JWT

前端會通過請求頭把JWT帶上,傳給服務(wù)端。

var config = {
 headers: { // 請求頭
  'Authorization': 'JWT ' + this.token # JWT后面有一個空格!
 },
}; 
axios.get('http://api.meiduo.site:8000/test/', config)
 .then(response => {})
 .catch(error => {});

4.校驗(yàn)JWT

在前端有JWT后,再次登錄服務(wù)端,服務(wù)端就會對這串JWT進(jìn)行校驗(yàn),如果有修改就不會通過,如果過期了也不會通過。

到此這篇關(guān)于django使用JWT保存用戶登錄信息的文章就介紹到這了,更多相關(guān)django 保存用戶登錄信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django對接elasticsearch實(shí)現(xiàn)全文檢索的示例代碼

    Django對接elasticsearch實(shí)現(xiàn)全文檢索的示例代碼

    搜索是很常用的功能,如果是千萬級的數(shù)據(jù)應(yīng)該怎么檢索,本文主要介紹了Django對接elasticsearch實(shí)現(xiàn)全文檢索的示例代碼,感興趣的可以了解一下
    2021-08-08
  • Python自動采集微信聯(lián)系人的實(shí)現(xiàn)示例

    Python自動采集微信聯(lián)系人的實(shí)現(xiàn)示例

    這篇文章主要介紹了Python自動采集微信聯(lián)系人的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • python爬蟲超時的處理的實(shí)例

    python爬蟲超時的處理的實(shí)例

    今天小編就為大家分享一篇python爬蟲超時的處理的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python實(shí)現(xiàn)獲取命令行輸出結(jié)果的方法

    Python實(shí)現(xiàn)獲取命令行輸出結(jié)果的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)獲取命令行輸出結(jié)果的方法,涉及Python命令執(zhí)行及文件讀寫等相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • 把django中admin后臺界面的英文修改為中文顯示的方法

    把django中admin后臺界面的英文修改為中文顯示的方法

    今天小編就為大家分享一篇把django中admin后臺界面的英文修改為中文顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python實(shí)現(xiàn)掃雷小游戲

    python實(shí)現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • python刪除列表內(nèi)容

    python刪除列表內(nèi)容

    這里給大家通過2個例子,分析了下如何使用python刪除列表內(nèi)容,也給出了思路,分別通過pop和remove方法來實(shí)現(xiàn),有相關(guān)需求的小伙伴可以參考下。
    2015-08-08
  • 詳細(xì)介紹Python的鴨子類型

    詳細(xì)介紹Python的鴨子類型

    相信python的開發(fā)者對于python的鴨子類型比較熟悉,鴨子類型在維基百科中的準(zhǔn)確定義是‘是動態(tài)類型的一種風(fēng)格。在這種風(fēng)格中,一個對象有效的語義,不是由繼承自特定的類或?qū)崿F(xiàn)特定的接口,而是由"當(dāng)前方法和屬性的集合"決定’。所以這篇文章給大家python的鴨子類型。
    2016-09-09
  • python爬蟲 模擬登錄人人網(wǎng)過程解析

    python爬蟲 模擬登錄人人網(wǎng)過程解析

    這篇文章主要介紹了python爬蟲 模擬登錄人人網(wǎng)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python實(shí)現(xiàn)漸變色的水平堆疊圖

    Python實(shí)現(xiàn)漸變色的水平堆疊圖

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)漸變色的水平堆疊圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論