最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間: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)境間安全地傳輸信息的簡潔的、URL安全的令牌標(biāo)準(zhǔn)。JWT的聲明一般被用來在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶身份信息,以便于從資源服務(wù)器獲取資源,也可以增加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認(rèn)證,也可被加密。

二、JWT的組成

JWT的結(jié)構(gòu)分為三部分,它是用點(diǎn)來分割的,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ù)載、秘密通過指定的算法進(jìn)行簽名。簽名的作用是保證JWT的發(fā)送者不能抵賴自己發(fā)送的消息,接收者能夠驗(yàn)證消息的完整性。這里是將前2部分的密文拼接起來,對這2部分進(jìn)行HS256加密,然后加鹽,最后在對加密后的內(nèi)容用Base64加密一次

三、Python寫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的一個有效時間,有效時間為12個小時

    token = jwt.encode(headers=headers, payload=payload, algorithm='HS256', key='123')  # 對上面內(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的一個有效時間,有效時間為12個小時

    token = jwt.encode(headers=headers, payload=payload, algorithm='HS256', key='123')  # 對上面內(nèi)容進(jìn)行加密,這里的key就是加的鹽,是自定義的,我們在使用鹽的時候一般是唯一的一個值
    print(token)
    return token

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

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

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

總結(jié) 

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

相關(guān)文章

  • Python實(shí)現(xiàn)端口流量轉(zhuǎn)發(fā)的示例代碼

    Python實(shí)現(xiàn)端口流量轉(zhuǎn)發(fā)的示例代碼

    端口流量轉(zhuǎn)發(fā)(Port Forwarding)是一種網(wǎng)絡(luò)通信技術(shù),用于將特定的網(wǎng)絡(luò)流量從一個端口或網(wǎng)絡(luò)地址轉(zhuǎn)發(fā)到另一個端口或地址,它在網(wǎng)絡(luò)中扮演著一個非常重要的角色,在Python語言中實(shí)現(xiàn)端口轉(zhuǎn)發(fā)非常容易,文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2023-11-11
  • Python實(shí)現(xiàn)字符串與數(shù)組相互轉(zhuǎn)換功能示例

    Python實(shí)現(xiàn)字符串與數(shù)組相互轉(zhuǎn)換功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)字符串與數(shù)組相互轉(zhuǎn)換功能,結(jié)合具體實(shí)例形式分析了Python字符串與數(shù)組相關(guān)轉(zhuǎn)換功能的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-09-09
  • Python OpenCV之常用濾波器使用詳解

    Python OpenCV之常用濾波器使用詳解

    OpenCV中常用的幾種濾波器有:均值濾波器、中值濾波器、高斯濾波器、雙邊濾波器,本文將通過示例詳細(xì)講解這幾種濾波器的使用,需要的可以參考一下
    2022-04-04
  • python從入門到精通(DAY 2)

    python從入門到精通(DAY 2)

    本文是python從入門到精通系列文章的第二篇,主要給大家簡單講解下Python的字典復(fù)制和內(nèi)置函數(shù),非常簡單實(shí)用,需要的小伙伴可以參考下
    2015-12-12
  • PyautoGui常用教程(一篇掌握)

    PyautoGui常用教程(一篇掌握)

    這篇文章主要介紹了PyautoGui常用教程(一篇掌握),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 利用Python求解阿基米德分牛問題

    利用Python求解阿基米德分牛問題

    這篇文章主要為大家詳細(xì)介紹了如何利用Python優(yōu)雅地求解阿基米德分牛問題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-03-03
  • Python制作七夕表白案例分享

    Python制作七夕表白案例分享

    這篇文章主要介紹了Python制作七夕表白案例分享,文章利用Python的基本操作實(shí)現(xiàn)七夕表白案例,需要的小伙伴可以參考一下
    2022-08-08
  • pandas如何統(tǒng)計(jì)某一列或某一行的缺失值數(shù)目

    pandas如何統(tǒng)計(jì)某一列或某一行的缺失值數(shù)目

    這篇文章主要介紹了pandas如何統(tǒng)計(jì)某一列或某一行的缺失值數(shù)目,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python語言中的常用容器(集合)示例詳解

    python語言中的常用容器(集合)示例詳解

    Python集合是一種無序且不重復(fù)的數(shù)據(jù)容器,它可以存儲任意類型的對象,包括數(shù)字、字符串、元組等,下面這篇文章主要介紹了python語言中常用容器(集合)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • Python語言描述連續(xù)子數(shù)組的最大和

    Python語言描述連續(xù)子數(shù)組的最大和

    這篇文章主要介紹了Python語言描述連續(xù)子數(shù)組的最大和,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評論

永和县| 阳高县| 门头沟区| 竹北市| 启东市| 乾安县| 唐海县| 唐海县| 唐海县| 灵山县| 巴林左旗| 宝兴县| 龙山县| 长兴县| 和硕县| 凌源市| 泸水县| 和静县| 石楼县| 崇左市| 宁晋县| 兴化市| 观塘区| 女性| 余干县| 龙门县| 长沙市| 渝北区| 绍兴县| 磐安县| 灵璧县| 苏尼特右旗| 乌拉特前旗| 洛扎县| 河东区| 宁乡县| 霍山县| 彰化市| 军事| 涡阳县| 五大连池市|