最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

袁庭新老師帶你極速掌握如何在SpringBoot項(xiàng)目中使用JWT技術(shù)

2023-08-28 09:17 作者:袁庭新  | 我要投稿



學(xué)習(xí)目標(biāo)

  1. 了解JWT基本概念

  2. 掌握J(rèn)WT基本使用

  3. 掌握如何在SpringBoot項(xiàng)目中使用JWT

  4. 了解跨域解決方案和HandlerInterceptor攔截器

SpringBoot整合JWT教學(xué)視頻見(jiàn):【JWT】袁庭新老師SpringBoot+JWT快速上手1小時(shí)輕松搞定JWT

1 JWT簡(jiǎn)介

JWT官方網(wǎng)址:https://jwt.io。

1.1 什么是JWT

JSON Web Token,簡(jiǎn)稱(chēng)JWT。通過(guò)數(shù)字簽名的方式,以JSON對(duì)象為載體,在不同的服務(wù)終端之間安全的傳輸信息。JWT是目前最流行的跨域認(rèn)證解決方案。

1.2 JWT有什么用

JWT通常用于Web應(yīng)用程序中的身份驗(yàn)證和授權(quán)目的。一旦用戶(hù)登錄,后續(xù)每個(gè)請(qǐng)求都將包含JWT,系統(tǒng)在每次處理用戶(hù)請(qǐng)求之前,都要先進(jìn)行JWT安全校驗(yàn),通過(guò)之后再進(jìn)行處理。

1.3 什么是JWT結(jié)構(gòu)

JWT由Header、Playload、Signature三部分組成,由.拼接。令牌最終的格式像這樣:xxxxx.yyyyy.zzzzz。在傳輸?shù)臅r(shí)候,會(huì)將JWT的三個(gè)部分分別進(jìn)行Base64編碼后,拼接成最終傳輸?shù)淖址?,也就是我們的Json Web Token。

1.3.1 Header

Header-標(biāo)頭。JWT頭是一個(gè)描述JWT元數(shù)據(jù)的JSON對(duì)象。報(bào)頭通常由兩部分組成:令牌的類(lèi)型和所使用的簽名算法。

  • typ屬性:表示令牌的類(lèi)型,JWT令牌統(tǒng)一寫(xiě)為"JWT"

  • alg屬性:表示使用的簽名算法,默認(rèn)為HMAC SHA256(寫(xiě)為HS256),或者RSA

然后,這個(gè)JSON被Base64Url編碼,以形成JWT的第一部分。

1.3.2 Payload

playload-載荷。存放用戶(hù)自定義的信息,通常會(huì)把用戶(hù)信息和令牌到期時(shí)間放在這里,同樣是一個(gè)JSON對(duì)象。

然后,有效負(fù)載被Base64Url編碼,以形成JWT的第二部分。

請(qǐng)注意,對(duì)于已簽名的令牌,這些信息雖然受到保護(hù),不會(huì)被篡改,但任何人都可以讀取。除非經(jīng)過(guò)加密,否則不要將機(jī)密信息放入JWT的payload或header中。

Payload中有七個(gè)默認(rèn)字段供選擇,默認(rèn)字段并不要求強(qiáng)制使用。我們還可以自定義私有字段,一般會(huì)把包含用戶(hù)信息的非保密數(shù)據(jù)放到Payload中。

1.3.3?Signature

Signature-簽名。要?jiǎng)?chuàng)建簽名部分,您必須獲取編碼的標(biāo)頭(Header)、編碼的有效載荷(Payload)、機(jī)密(secret)、標(biāo)頭中指定的算法(如HS256),并對(duì)其進(jìn)行簽名。

例如,如果要使用HMAC SHA256算法,則將以以下方式創(chuàng)建簽名:

使用標(biāo)頭的算法和私鑰對(duì)第一部分和第二部分進(jìn)行加密,通過(guò)Base64Url編碼后形成JWT的第三部分。

Signature用于驗(yàn)證消息在發(fā)送過(guò)程中沒(méi)有更改,在使用私鑰簽名的令牌的情況下,它還可以驗(yàn)證JWT的發(fā)送者是否就是它所說(shuō)的那個(gè)人。

1.3.4 Putting all together

輸出是三個(gè)由點(diǎn)分隔的Base64-URL字符串,可以在HTML和HTTP環(huán)境中輕松傳遞,同時(shí)與基于XML的標(biāo)準(zhǔn)(如SAML)相比更緊湊。

以下顯示了一個(gè)JWT,該JWT具有以前的標(biāo)頭和有效載荷編碼,并使用秘密簽名。

如果你想玩JWT并將這些概念付諸實(shí)踐,你可以使用https://jwt.io/#debugger-io來(lái)解碼、驗(yàn)證和生成JWT。

1.4 JWT執(zhí)行流程

JWT的具體執(zhí)行流程見(jiàn)下:


1.5 JWT優(yōu)點(diǎn)

基于Token的認(rèn)證方式相比傳統(tǒng)的Session認(rèn)證方式能夠解決移動(dòng)端和分布式開(kāi)發(fā)中跨域問(wèn)題,具有下列優(yōu)點(diǎn):

  • 減少服務(wù)器壓力:服務(wù)端不需要存儲(chǔ)Session信息,Token可以攜帶登錄用戶(hù)服務(wù)器所需信息

  • 支持跨域訪(fǎng)問(wèn):將Token放到請(qǐng)求頭中,就不需要Cookie存儲(chǔ)信息,所以跨域后不會(huì)因?yàn)镃ookie是無(wú)法跨域而導(dǎo)致信息丟失

  • 更適用于移動(dòng)端:當(dāng)客戶(hù)端是非瀏覽器平臺(tái)時(shí)或者Cookie被禁止時(shí),采用Token認(rèn)證方式會(huì)簡(jiǎn)單很多

  • 更適用CDN:可以通過(guò)內(nèi)容分發(fā)網(wǎng)絡(luò)請(qǐng)求服務(wù)端的所有資料

  • 無(wú)需考慮CSRF:由于不再依賴(lài)Cookie,所以采用Token認(rèn)證方式不會(huì)發(fā)生CSRF,所以也就無(wú)需考慮CSRF的防御

2 JWT使用

2.1 JWT基本使用

1.使用IDEA創(chuàng)建一個(gè)【Spring Initializr】類(lèi)型的項(xiàng)目名稱(chēng)為【springboot_jwt】的工程。

2.在項(xiàng)目的pom.xml配置文件中添加JWT相關(guān)依賴(lài)。

3.在com.ytx.springboot_jwt.test包下創(chuàng)建JwtTests測(cè)試類(lèi),演示JWT的基本使用。

2.2 SpringBoot+JWT

1.在com.ytx.springboot_jwt.domain包下創(chuàng)建User實(shí)體類(lèi)。

2.在com.ytx.springboot_jwt.utils包下創(chuàng)建響應(yīng)統(tǒng)一結(jié)果集ResponseResult工具類(lèi)。

3.在com.ytx.springboot_jwt.utils包下創(chuàng)建JWT操作的工具類(lèi)。

4.在com.ytx.springboot_jwt.controller包下創(chuàng)建UserController控制層類(lèi)。

5.使用ApiPost測(cè)試工具向http://localhost:8080/users/login接口發(fā)送POST類(lèi)型的請(qǐng)求并提交JSON格式的數(shù)據(jù)。

6.使用ApiPost測(cè)試工具將上一個(gè)接口返回的JWT字符串?dāng)?shù)據(jù),作為本次請(qǐng)求token參數(shù)的數(shù)據(jù)放在Header中提交給服務(wù)進(jìn)行驗(yàn)證。


2.3 HandlerInterceptor攔截器

1.創(chuàng)建攔截器類(lèi)com.cy.store.interceptor.LoginInterceptor,并實(shí)現(xiàn)org.springframework.web.servlet.HandlerInterceptor接口。

2.創(chuàng)建LoginInterceptorConfigurer攔截器的配置類(lèi)并實(shí)現(xiàn)org.springframework.web.servlet.config.annotation.WebMvcConfigurer接口,配置類(lèi)需要添加@Configruation注解修飾。


2.4?跨域解決方案

解決在前后端分離項(xiàng)目中的跨域問(wèn)題。通過(guò)實(shí)現(xiàn)WebMvcConfigurer接口,并重寫(xiě)addCorsMappings(CorsRegistry registry)方法來(lái)實(shí)現(xiàn)。


袁庭新老師帶你極速掌握如何在SpringBoot項(xiàng)目中使用JWT技術(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
镇巴县| 天峨县| 信丰县| 汉寿县| 临潭县| 武威市| 汝州市| 九江市| 重庆市| 鄂温| 芒康县| 武安市| 中西区| 富宁县| 措勤县| 金秀| 西充县| 湟源县| 商城县| 阳东县| 县级市| 抚松县| 宝鸡市| 黄骅市| 来宾市| 庆城县| 都昌县| 砀山县| 连云港市| 永丰县| 呼和浩特市| 巍山| 襄樊市| 江山市| 潞城市| 仙桃市| 瓦房店市| 博白县| 无锡市| 陇南市| 施秉县|