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

基于Token的身份驗(yàn)證之JWT基礎(chǔ)教程

 更新時(shí)間:2018年09月06日 11:08:00   作者:ChrisZZ  
JWT(json web token)是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標(biāo)準(zhǔn)。下面這篇文章主要給大家介紹了關(guān)于基于Token的身份驗(yàn)證之JWT的基礎(chǔ)相關(guān)資料,文中通過示例代碼的非常詳細(xì),需要的朋友可以參考下

前言

初次了解JWT,很基礎(chǔ),高手勿噴。

基于Token的身份驗(yàn)證用來替代傳統(tǒng)的cookie+session身份驗(yàn)證方法中的session。

token應(yīng)用流程為:

1、初次登錄:用戶初次登錄,輸入用戶名密碼。

2、密碼驗(yàn)證:服務(wù)器從數(shù)據(jù)庫取出用戶名和密碼進(jìn)行驗(yàn)證。

3、生成JWT:服務(wù)器端驗(yàn)證通過,根據(jù)從數(shù)據(jù)庫返回的信息,以及預(yù)設(shè)規(guī)則,生成JWT。

4、返還JWT:服務(wù)器的HTTP RESPONSE中將JWT返還。

5、帶JWT的請(qǐng)求:以后客戶端發(fā)起請(qǐng)求,HTTP REQUEST HEADER中的Authorization字段都要有值,為JWT,用來驗(yàn)證用戶身份以及對(duì)路由,服務(wù)和資源的訪問權(quán)限進(jìn)行驗(yàn)證。請(qǐng)求驗(yàn)證的url可以例如:http://127.0.0.1:8083/change/goodsMenu? token=JWT

JWT是啥?

JWT就是一個(gè)字符串,經(jīng)過加密處理與校驗(yàn)處理的字符串,形式為:

A.B.C

A由JWT頭部信息header加密得到

B由JWT用到的身份驗(yàn)證信息json數(shù)據(jù)加密得到

C由A和B加密得到,是校驗(yàn)部分

怎樣生成A?

header格式為:

{
 "typ": "JWT",
 "alg": "HS256" 
}

它就是一個(gè)json串,兩個(gè)字段是必須的,不能多也不能少。alg字段指定了生成C的算法,默認(rèn)值是HS256

將header用base64加密,得到A

通常,JWT庫中,可以把A部分固定寫死,用戶最多指定一個(gè)alg的取值

怎樣計(jì)算B?

根據(jù)JWT claim set[用base64]加密得到的。claim set是一個(gè)json數(shù)據(jù),是表明用戶身份的數(shù)據(jù),可自行指定字段很靈活,也有固定字段表示特定含義(但不一定要包含特定字段,只是推薦)。

這里偷懶,直接用php中的代碼來表示claim set了,重在說明字段含義:

$token = array(
 "iss" => "http://example.org", #非必須。issuer 請(qǐng)求實(shí)體,可以是發(fā)起請(qǐng)求的用戶的信息,也可是jwt的簽發(fā)者。
 "iat" => 1356999524,    #非必須。issued at。 token創(chuàng)建時(shí)間,unix時(shí)間戳格式
 "exp" => "1548333419",   #非必須。expire 指定token的生命周期。unix時(shí)間戳格式
 "aud" => "http://example.com", #非必須。接收該JWT的一方。
 "sub" => "jrocket@example.com", #非必須。該JWT所面向的用戶
 "nbf" => 1357000000, # 非必須。not before。如果當(dāng)前時(shí)間在nbf里的時(shí)間之前,則Token不被接受;一般都會(huì)留一些余地,比如幾分鐘。
 "jti" => '222we',  # 非必須。JWT ID。針對(duì)當(dāng)前token的唯一標(biāo)識(shí)

 "GivenName" => "Jonny", # 自定義字段
 "Surname" => "Rocket", # 自定義字段
 "Email" => "jrocket@example.com", # 自定義字段
 "Role" => ["Manager", "Project Administrator"] # 自定義字段
);

JWT遵循RFC7519,里面提到claim set的json數(shù)據(jù)中,自定義字段的key是一個(gè)string,value是一個(gè)json數(shù)據(jù)。因此隨意編寫吧,很靈活。

個(gè)人初學(xué),認(rèn)為一個(gè)最基本最簡(jiǎn)單最常用的claim set為:

$token=array(
 "user_id" => 123456, #用戶id,表明用戶
 "iat" => 1356999524, #token發(fā)布時(shí)間
 "exp" => 1556999524, #token過期時(shí)間
);

將claim set加密后得到B,學(xué)名payload

怎樣計(jì)算C?

將A.B使用HS256加密(其實(shí)是用header中指定的算法),當(dāng)然加密過程中還需要密鑰(自行指定的一個(gè)字符串)。
加密得到C,學(xué)名signature,其實(shí)就是一個(gè)字符串。作用類似于CRC校驗(yàn),保證加密沒有問題。

好了,現(xiàn)在A.B.C就是生成的token了。

怎樣使用token?

可以放到HTTP請(qǐng)求的請(qǐng)求頭中,通常是Authorization字段。
也有人說放到cookie。不過移動(dòng)端app用cookie似乎不方便。

token應(yīng)用流程?

初次登錄:用戶初次登錄,輸入用戶名密碼

密碼驗(yàn)證:服務(wù)器從數(shù)據(jù)庫取出用戶名和密碼進(jìn)行驗(yàn)證

生成JWT:服務(wù)器端驗(yàn)證通過,根據(jù)從數(shù)據(jù)庫返回的信息,以及預(yù)設(shè)規(guī)則,生成JWT

返還JWT:服務(wù)器的HTTP RESPONSE中將JWT返還

帶JWT的請(qǐng)求:以后客戶端發(fā)起請(qǐng)求,HTTP REQUEST HEADER中的Authorizatio字段都要有值,為JWT

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 解決VIM顯示utf-8文件亂碼問題

    解決VIM顯示utf-8文件亂碼問題

    在Vim中,有四個(gè)與編碼有關(guān)的選項(xiàng),它們是:fileencodings、fileencoding、encoding和termencoding。下面,我們?cè)敿?xì)介紹一下這四個(gè)選項(xiàng)的含義和作用,感興趣的朋友一起看看吧
    2020-02-02
  • Webpack基礎(chǔ)教程之名詞解釋

    Webpack基礎(chǔ)教程之名詞解釋

    webpack 是一個(gè)現(xiàn)代JavaScript 應(yīng)用程序的靜態(tài)模塊打包器,這次為大家簡(jiǎn)單介紹一下webpack及關(guān)于webpack的一些專屬名詞入口(entry),輸出(output),loader,插件(plugins)
    2020-02-02
  • Ceph集群CephFS文件存儲(chǔ)核心概念及部署使用詳解

    Ceph集群CephFS文件存儲(chǔ)核心概念及部署使用詳解

    這篇文章主要為大家介紹了Ceph集群CephFS文件存儲(chǔ)核心概念及部署使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 超好用的免費(fèi)內(nèi)網(wǎng)穿透工具【永久免費(fèi)不限制流量】

    超好用的免費(fèi)內(nèi)網(wǎng)穿透工具【永久免費(fèi)不限制流量】

    對(duì)于開發(fā)人員來講,演示內(nèi)網(wǎng)web站點(diǎn)、本地開發(fā)微信公眾號(hào)、小程序開發(fā)、調(diào)試第三方支付系統(tǒng)對(duì)接等開發(fā)環(huán)境,往往需要一個(gè)環(huán)境可以進(jìn)行調(diào)試,市面上內(nèi)網(wǎng)穿透工具有很多,這里推薦一款簡(jiǎn)單又好用的cpolar,可以永久免費(fèi)使用,不限制流量,支持http/https/tcp協(xié)議
    2022-09-09
  • 字符集和字符編碼(Charset & Encoding)

    字符集和字符編碼(Charset & Encoding)

    相信大家一定碰到過,打開某個(gè)網(wǎng)頁,卻顯示一堆像亂碼,如"бЇЯАзЪСЯ"、"�????????"?還記得HTTP中的Accept-Charset、Accept-Encoding、Accept-Language、Content-Encoding、Content-Language等消息頭字段?這些就是接下來我們要探討的
    2012-04-04
  • 大數(shù)據(jù)HelloWorld-Flink實(shí)現(xiàn)WordCount

    大數(shù)據(jù)HelloWorld-Flink實(shí)現(xiàn)WordCount

    這篇文章主要介紹了大數(shù)據(jù)HelloWorld-Flink實(shí)現(xiàn)WordCount的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 網(wǎng)址URL的大小寫敏感嗎,有什么區(qū)別?

    網(wǎng)址URL的大小寫敏感嗎,有什么區(qū)別?

    在?Web?開發(fā)中,網(wǎng)址URL?的大小寫問題可能引發(fā)意想不到的行為,本文將從技術(shù)規(guī)范、服務(wù)器配置、瀏覽器行為等多個(gè)維度,系統(tǒng)解析?URL?各組件的大小寫敏感性,并提供實(shí)踐建議,可有效避免因?URL?大小寫不一致引發(fā)的搜索引擎優(yōu)化問題、鏈接失效及用戶體驗(yàn)下降
    2025-04-04
  • OAuth 2.0授權(quán)協(xié)議詳解

    OAuth 2.0授權(quán)協(xié)議詳解

    這篇文章主要介紹了OAuth 2.0授權(quán)協(xié)議詳解,本文對(duì)OAuth協(xié)議做了詳解講解,對(duì)OAuth協(xié)議的各個(gè)方面做了分解,讀完本文你就會(huì)知道到底啥是OAuth了,需要的朋友可以參考下
    2014-09-09
  • Webstorm解除版本控制的場(chǎng)景分析

    Webstorm解除版本控制的場(chǎng)景分析

    這篇文章主要介紹了Webstorm解除版本控制的場(chǎng)景分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 利用DeepSeek實(shí)現(xiàn)復(fù)雜Git操作的詳細(xì)過程

    利用DeepSeek實(shí)現(xiàn)復(fù)雜Git操作的詳細(xì)過程

    今天綜合利用 DeepSeek V3 和 R1 推理模型,成功解決了一個(gè)復(fù)雜的 Git 操作,謹(jǐn)以此文記錄 DeepSeek 使用心得,以備后續(xù)復(fù)盤,下面是小編給大家介紹的利用DeepSeek實(shí)現(xiàn)復(fù)雜Git操作的詳細(xì)過程,需要的朋友可以參考下
    2025-02-02

最新評(píng)論

民县| 九龙县| 包头市| 潞城市| 宣化县| 四平市| 瑞安市| 青州市| 汝州市| 恩施市| 太原市| 新和县| 梁平县| 阿拉善左旗| 天水市| 介休市| 建昌县| 广灵县| 行唐县| 巍山| 德阳市| 罗城| 蓬安县| 望都县| 桓仁| 保德县| 建阳市| 上栗县| 海林市| 绥滨县| 柘荣县| 莎车县| 依安县| 莫力| 清水河县| 高陵县| 平果县| 武陟县| 汶上县| 建湖县| 盐山县|