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

Python使用JWT的超詳細(xì)教程

 更新時(shí)間:2024年10月17日 11:34:02   作者:黃小耶@  
這篇文章主要介紹了Python使用JWT的相關(guān)資料,JWT(JSON?Web?Tokens)是一種網(wǎng)絡(luò)應(yīng)用間傳輸信息的標(biāo)準(zhǔn),包括三部分:Header(頭部),Payload(負(fù)載),Signature(簽名),頭部包含聲明類型和算法,需要的朋友可以參考下

一、JWT的介紹

JWT(JSON Web Tokens)是一種用于在網(wǎng)絡(luò)應(yīng)用環(huán)境間安全地傳輸信息的簡(jiǎn)潔的、URL安全的令牌標(biāo)準(zhǔn)。JWT的聲明一般被用來(lái)在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶身份信息,以便于從資源服務(wù)器獲取資源,也可以增加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認(rèn)證,也可被加密。

二、JWT的組成

JWT的結(jié)構(gòu)分為三部分,它是用點(diǎn)來(lái)分割的,Header(頭部),Payload(負(fù)載),Signature(簽名)。如下圖

1、Header(頭部)

頭部通常包含了兩部分信息:聲明類型和使用什么算法,第一部分就是將json轉(zhuǎn)化為字符串,然后用Base64加密,如下格式

{
   "alg":"HS256",
   "type":"jwt"
}

2、Payload(負(fù)載)

負(fù)載里面通常就是我們要傳遞給前端的值,如用戶的一些信息啊,也是將json轉(zhuǎn)換為字符串,然后用Base64加密,如下格式

{
    "id":"123",
    "username":"xiaoming"
}

3、Signature(簽名)

簽名的作用是保證JWT的未被篡改。簽名的生成方式是將編碼后的頭部、編碼后的負(fù)載、秘密通過(guò)指定的算法進(jìn)行簽名。簽名的作用是保證JWT的發(fā)送者不能抵賴自己發(fā)送的消息,接收者能夠驗(yàn)證消息的完整性。這里是將前2部分的密文拼接起來(lái),對(duì)這2部分進(jìn)行HS256加密,然后加鹽,最后在對(duì)加密后的內(nèi)容用Base64加密一次

三、Python寫(xiě)JWT

1、安裝Jwt

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyJWT

2、使用JWT

import datetime
import jwt

def create_jwt():
    headers = {
        'alg': 'HS256',
        'typ': 'JWT'
    }  # jwt的頭部,包含了類型和算法的指定

    payload = {
        "id": 123,
        "username": '小明',
        'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=12),
    }  # jwt的負(fù)載,都是一些自定義值,其中exp中的內(nèi)容是我們指定jwt的一個(gè)有效時(shí)間,有效時(shí)間為12個(gè)小時(shí)

    token = jwt.encode(headers=headers, payload=payload, algorithm='HS256', key='123')  # 對(duì)上面內(nèi)容進(jìn)行加密,這里的key就是加的鹽
    print(token)

if __name__ == '__main__':
    create_jwt()

3、解密JWT

import datetime

import jwt

def create_jwt():
    headers = {
        'alg': 'HS256',
        'typ': 'JWT'
    }  # jwt的頭部,包含了類型和算法的指定

    payload = {
        "id": 123,
        "username": '小明',
        'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=12),
    }  # jwt的負(fù)載,都是一些自定義值,其中exp中的內(nèi)容是我們指定jwt的一個(gè)有效時(shí)間,有效時(shí)間為12個(gè)小時(shí)

    token = jwt.encode(headers=headers, payload=payload, algorithm='HS256', key='123')  # 對(duì)上面內(nèi)容進(jìn)行加密,這里的key就是加的鹽,是自定義的,我們?cè)谑褂名}的時(shí)候一般是唯一的一個(gè)值
    print(token)
    return token

def decode_JWT(token):
    content = jwt.decode(jwt=token, key='123', algorithms=['HS256'])  # 對(duì)jwt進(jìn)行解密,這里用的key必須和上面用的key一樣,否則是無(wú)法解密出來(lái)的
    print(content)

if __name__ == '__main__':
    token = create_jwt()
    decode_JWT(token)

解密出來(lái)的結(jié)果如下圖

總結(jié) 

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

相關(guān)文章

  • Django choices下拉列表綁定實(shí)例

    Django choices下拉列表綁定實(shí)例

    這篇文章主要介紹了Django choices下拉列表綁定實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • 淺談python中的getattr函數(shù) hasattr函數(shù)

    淺談python中的getattr函數(shù) hasattr函數(shù)

    下面小編就為大家?guī)?lái)一篇淺談python中的getattr函數(shù) hasattr函數(shù)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • Python mutiprocessing多線程池pool操作示例

    Python mutiprocessing多線程池pool操作示例

    這篇文章主要介紹了Python mutiprocessing多線程池pool操作,結(jié)合實(shí)例形式分析了Python多線程模塊multiprocessing進(jìn)程池相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • 非常詳細(xì)的Django連接mysql數(shù)據(jù)庫(kù)步驟記錄

    非常詳細(xì)的Django連接mysql數(shù)據(jù)庫(kù)步驟記錄

    我的Mysql中已經(jīng)有了項(xiàng)目需要使用的相關(guān)數(shù)據(jù)庫(kù),現(xiàn)在需要通過(guò)django來(lái)獲取Mysql里的數(shù)據(jù)并使用,下面這篇文章主要給大家介紹了關(guān)于非常詳細(xì)的Django連接mysql數(shù)據(jù)庫(kù)步驟,需要的朋友可以參考下
    2022-10-10
  • Python字符串格式化之使用format()方法

    Python字符串格式化之使用format()方法

    這篇文章主要介紹了Python字符串格式化之使用format()方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Python格式化字符串的四種常見(jiàn)方式

    Python格式化字符串的四種常見(jiàn)方式

    在 Python 編程中,格式化字符串是一項(xiàng)常見(jiàn)且重要的任務(wù),Python 提供了多種格式化字符串的方式,每種方式都有其特點(diǎn)和適用場(chǎng)景,本文將詳細(xì)介紹 Python 中格式化字符串的 4 種常見(jiàn)方式,需要的朋友可以參考下
    2025-04-04
  • 超詳細(xì)Python解釋器新手安裝教程

    超詳細(xì)Python解釋器新手安裝教程

    這篇文章主要介紹了超詳細(xì)Python解釋器新手安裝教程,文中有非常詳細(xì)的圖文示例,對(duì)不會(huì)安裝python解釋器的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • pytest官方文檔解讀fixtures的autouse

    pytest官方文檔解讀fixtures的autouse

    這篇文章主要為大家介紹了pytest官方文檔解讀fixtures的autouse,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • sqlalchemy實(shí)現(xiàn)時(shí)間列自動(dòng)更新教程

    sqlalchemy實(shí)現(xiàn)時(shí)間列自動(dòng)更新教程

    這篇文章主要介紹了sqlalchemy實(shí)現(xiàn)時(shí)間列自動(dòng)更新教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • python中調(diào)試或排錯(cuò)的五種方法示例

    python中調(diào)試或排錯(cuò)的五種方法示例

    這篇文章主要給大家介紹了關(guān)于python中調(diào)試或排錯(cuò)的五種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論