中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

甘肅最新消息今天seo優(yōu)化顧問(wèn)

甘肅最新消息今天,seo優(yōu)化顧問(wèn),wordpress演示數(shù)據(jù)庫(kù),網(wǎng)站根目錄目錄 一、JWT介紹 二、安裝依賴 三、登陸接口 1、令牌工具類(lèi) 2、接口代碼 四、說(shuō)明 一、JWT介紹 JWT全稱(chēng):JSON Web Token (官網(wǎng):JSON Web Tokens - jwt.io) 定義了一種簡(jiǎn)潔的、自包含的格式,用于在通信雙方以json…

目錄

一、JWT介紹

二、安裝依賴

?三、登陸接口

1、令牌工具類(lèi)

2、接口代碼

四、說(shuō)明


一、JWT介紹

JWT全稱(chēng):JSON Web Token (官網(wǎng):JSON Web Tokens - jwt.io)

  • 定義了一種簡(jiǎn)潔的、自包含的格式,用于在通信雙方以json數(shù)據(jù)格式安全的傳輸信息。由于數(shù)字簽名的存在,這些信息是可靠的。

    簡(jiǎn)潔:是指jwt就是一個(gè)簡(jiǎn)單的字符串??梢栽谡?qǐng)求參數(shù)或者是請(qǐng)求頭當(dāng)中直接傳遞。

    自包含:指的是jwt令牌,看似是一個(gè)隨機(jī)的字符串,但是我們是可以根據(jù)自身的需求在jwt令牌中存儲(chǔ)自定義的數(shù)據(jù)內(nèi)容。如:可以直接在jwt令牌中存儲(chǔ)用戶的相關(guān)信息。

    簡(jiǎn)單來(lái)講,jwt就是將原始的json數(shù)據(jù)格式進(jìn)行了安全的封裝,這樣就可以直接基于jwt在通信雙方安全的進(jìn)行信息傳輸了。

JWT的組成: (JWT令牌由三個(gè)部分組成,三個(gè)部分之間使用英文的點(diǎn)來(lái)分割)

  • 第一部分:Header(頭), 記錄令牌類(lèi)型、簽名算法等。 例如:{"alg":"HS256","type":"JWT"}

  • 第二部分:Payload(有效載荷),攜帶一些自定義信息、默認(rèn)信息等。 例如:{"id":"1","username":"Tom"}

  • 第三部分:Signature(簽名),防止Token被篡改、確保安全性。將header、payload,并加入指定秘鑰,通過(guò)指定簽名算法計(jì)算而來(lái)。

    簽名的目的就是為了防jwt令牌被篡改,而正是因?yàn)閖wt令牌最后一個(gè)部分?jǐn)?shù)字簽名的存在,所以整個(gè)jwt 令牌是非常安全可靠的。一旦jwt令牌當(dāng)中任何一個(gè)部分、任何一個(gè)字符被篡改了,整個(gè)令牌在校驗(yàn)的時(shí)候都會(huì)失敗,所以它是非常安全可靠的。

?

JWT是如何將原始的JSON格式數(shù)據(jù),轉(zhuǎn)變?yōu)樽址哪?#xff1f;

其實(shí)在生成JWT令牌時(shí),會(huì)對(duì)JSON格式的數(shù)據(jù)進(jìn)行一次編碼:進(jìn)行base64編碼

Base64:是一種基于64個(gè)可打印的字符來(lái)表示二進(jìn)制數(shù)據(jù)的編碼方式。既然能編碼,那也就意味著也能解碼。所使用的64個(gè)字符分別是A到Z、a到z、 0- 9,一個(gè)加號(hào),一個(gè)斜杠,加起來(lái)就是64個(gè)字符。任何數(shù)據(jù)經(jīng)過(guò)base64編碼之后,最終就會(huì)通過(guò)這64個(gè)字符來(lái)表示。當(dāng)然還有一個(gè)符號(hào),那就是等號(hào)。等號(hào)它是一個(gè)補(bǔ)位的符號(hào)

需要注意的是Base64是編碼方式,而不是加密方式。

二、安裝依賴

<!-- JWT依賴-->
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version>
</dependency>

?三、登陸接口

1、令牌工具類(lèi)

public class JwtUtils {private static String signKey = "zqhjwt";//簽名密鑰private static Long expire = 43200000L; //有效時(shí)間/*** 生成JWT令牌* @param claims JWT第二部分負(fù)載 payload 中存儲(chǔ)的內(nèi)容* @return*/public static String generateJwt(Map<String, Object> claims){String jwt = Jwts.builder().addClaims(claims)//自定義信息(有效載荷).signWith(SignatureAlgorithm.HS256, signKey)//簽名算法(頭部).setExpiration(new Date(System.currentTimeMillis() + expire))//過(guò)期時(shí)間.compact();return jwt;}/*** 解析JWT令牌* @param jwt JWT令牌* @return JWT第二部分負(fù)載 payload 中存儲(chǔ)的內(nèi)容*/public static Claims parseJWT(String jwt){Claims claims = Jwts.parser().setSigningKey(signKey)//指定簽名密鑰.parseClaimsJws(jwt)//指定令牌Token.getBody();return claims;}
}

2、接口代碼

LoginController

@RestController
public class LoginController {@AutowiredEmpService empService;@PostMapping("login")public Result login(@RequestBody Emp emp){Emp e =  empService.login(emp);if(e!= null){Map<String,Object> clzims = new HashMap<>();clzims.put("id",e.getId());clzims.put("name",e.getName());clzims.put("username",e.getUsername());// 生成jwt令牌String jwt = JwtUtils.generateJwt(clzims);return Result.success(jwt);}return  Result.error("用戶名或密碼錯(cuò)誤");}}

Service

@Overridepublic Emp login(Emp emp) {Emp loginEmp = empMapper.getByUerAndPsw(emp);return loginEmp;}

mapper

@Select("SELECT * from emp where username = #{username} and password = #{password}")Emp getByUerAndPsw(Emp emp);

四、說(shuō)明

需求:

  1. 生成令牌

    在登錄成功之后來(lái)生成一個(gè)JWT令牌,并且把這個(gè)令牌直接返回給前端
  2. 校驗(yàn)令牌

    攔截前端請(qǐng)求,從請(qǐng)求中獲取到令牌,對(duì)令牌進(jìn)行解析校驗(yàn)

步驟:

  1. 引入JWT工具類(lèi)

    在項(xiàng)目工程下創(chuàng)建uitle包,并把提供JWT工具類(lèi)復(fù)制到該包下
  2. 登錄完成后,調(diào)用工具類(lèi)生成JWT令牌并返回

接口文檔

  • 響應(yīng)數(shù)據(jù)

    參數(shù)格式:application/json

    參數(shù)說(shuō)明:

    名稱(chēng)類(lèi)型是否必須默認(rèn)值備注其他信息
    codenumber必須響應(yīng)碼, 1 成功 ; 0 失敗
    msgstring非必須提示信息
    datastring必須返回的數(shù)據(jù) , jwt令牌

    響應(yīng)數(shù)據(jù)樣例:

    {"code": 1,"msg": "success","data": "eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOjEsInVzZXJuYW1lIjoiamlueW9uZyIsImV4cCI6MTY2MjIwNzA0OH0.KkUc_CXJZJ8Dd063eImx4H9Ojfrr6XMJ-yVzaWCVZCo"
    }
  • 備注說(shuō)明

    用戶登錄成功后,系統(tǒng)會(huì)自動(dòng)下發(fā)JWT令牌,然后在后續(xù)的每次請(qǐng)求中,都需要在請(qǐng)求頭header中攜帶到服務(wù)端,請(qǐng)求頭的名稱(chēng)為 token ,值為 登錄時(shí)下發(fā)的JWT令牌。

    如果檢測(cè)到用戶未登錄,則會(huì)返回如下固定錯(cuò)誤信息:

    {"code": 0,"msg": "NOT_LOGIN","data": null
    }

解讀完接口文檔中的描述了,目前我們先來(lái)完成令牌的生成和令牌的下發(fā),我們只需要生成一個(gè)令牌返回給前端就可以了。

http://www.risenshineclean.com/news/29565.html

相關(guān)文章:

  • 設(shè)計(jì)案例分享網(wǎng)站搜索引擎優(yōu)化包括哪些內(nèi)容
  • h5移動(dòng)端網(wǎng)站開(kāi)發(fā)最有效的宣傳方式
  • 新開(kāi)傳奇網(wǎng)站999新服網(wǎng)百度正版下載恢復(fù)百度
  • 美國(guó)做ppt的網(wǎng)站百度競(jìng)價(jià)排名榜
  • 貴州專(zhuān)業(yè)網(wǎng)站建設(shè)公司哪家好湖南seo優(yōu)化哪家好
  • 新疆建網(wǎng)站程序站外推廣
  • 正規(guī)網(wǎng)店代運(yùn)營(yíng)公司seo每日
  • 豆瓣網(wǎng)站模板滕州今日頭條新聞
  • 自己的電腦做網(wǎng)站服務(wù)器seo的五個(gè)步驟
  • 找人做網(wǎng)站協(xié)議網(wǎng)站在線優(yōu)化檢測(cè)
  • 專(zhuān)業(yè)網(wǎng)站優(yōu)化外包百度seo推廣計(jì)劃類(lèi)型包括
  • 怎么學(xué)做淘寶電商網(wǎng)站嗎關(guān)鍵詞搜索排行榜
  • html5 公眾號(hào) 網(wǎng)站開(kāi)發(fā)百度seo優(yōu)化價(jià)格
  • 專(zhuān)業(yè)做根雕的網(wǎng)站廣州百度搜索優(yōu)化
  • 備案的網(wǎng)站名稱(chēng)寫(xiě)什么深圳整站全網(wǎng)推廣
  • 大眾點(diǎn)評(píng)怎么做團(tuán)購(gòu)網(wǎng)站廣告軟文外鏈平臺(tái)
  • 做網(wǎng)站需要數(shù)據(jù)儲(chǔ)存么深圳網(wǎng)站設(shè)計(jì)三把火
  • 做網(wǎng)站十大公司哪家好短視頻推廣渠道
  • 92素材網(wǎng)安卓?jī)?yōu)化大師官網(wǎng)
  • 手機(jī)微信網(wǎng)站怎么做的好深圳網(wǎng)站設(shè)計(jì)十年樂(lè)云seo
  • 最好的網(wǎng)站制作公司百度快照是怎么做上去的
  • 自己如何開(kāi)自己的商城黑帽seo培訓(xùn)網(wǎng)
  • 杭州建立網(wǎng)站長(zhǎng)沙企業(yè)網(wǎng)站建設(shè)報(bào)價(jià)
  • 動(dòng)漫制作專(zhuān)業(yè)的高職實(shí)訓(xùn)室seo引擎搜索網(wǎng)站關(guān)鍵詞
  • 濟(jì)南外貿(mào)網(wǎng)站建設(shè)公司排名seo基礎(chǔ)入門(mén)免費(fèi)教程
  • 做網(wǎng)站和做軟件哪個(gè)賺錢(qián)丈哥seo博客工具
  • 網(wǎng)站投入費(fèi)用百度知道答題賺錢(qián)
  • 四川瑞通工程建設(shè)有限公司網(wǎng)站東莞谷歌推廣
  • 計(jì)算機(jī)做網(wǎng)站難嗎yandex搜索引擎
  • 河北省 政府網(wǎng)站 建設(shè)意見(jiàn)如何擁有自己的網(wǎng)站