成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JWT開(kāi)發(fā)工具

張率功 / 2866人閱讀

摘要:簡(jiǎn)介為網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行一種基于開(kāi)放標(biāo)準(zhǔn)認(rèn)證用戶身份信息認(rèn)證成功,才可獲取其它資源,如用戶登錄最重要作用對(duì)信息防偽的原理一個(gè)由三個(gè)部分組成公共部分私有部分簽名部分。

1.簡(jiǎn)介:

(1.1)JWT(Json Web Token):

? ? ? ? ? ? ? 為網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行一種基于JSON開(kāi)放標(biāo)準(zhǔn)

(1.2)JWT認(rèn)證用戶身份信息:

? ? ? ? ? ? ? 認(rèn)證成功,才可獲取其它資源,如:用戶登錄

(1.3)JWT最重要作用:

? ? ? ? ? ? ? 對(duì) token信息防偽

(1.4)JWT的原理:

? ? ? ? ? ? ? 一個(gè)JWT由三個(gè)部分組成:公共部分、私有部分、簽名部分。最后由這三者組合進(jìn)行

? ? ? ? ? ? ? base64編碼得到JWT

? ? ? ? ? ? ? 如圖:? ? ? ?

? ? ??

? ? ? ? ? ? (1.4.1)公共部分

? ? ? ? ? ? ? ? ? ? ? ? ? ?主要是該JWT的相關(guān)配置參數(shù),比如簽名的加密算法、格式類型、過(guò)期時(shí)間等等

? ? ? ? ? ? ? ? ? ? ? ? ? ? Key=ATGUIGU

? ? ? ? ? ? ?(1.4.2)私有部分

? ? ? ? ? ? ? ? ? ? ? ? ? ? 用戶自定義的內(nèi)容,根據(jù)實(shí)際需要真正要封裝的信息

? ? ? ? ? ? ? ? ? ? ? ? ? ? userInfo{用戶Id,用戶昵稱nickName}

? ? ? ? ? ? ?(1.4.3)簽名部分

? ? ? ? ? ? ? ? ? ? ? ? ? ? SaltiP:當(dāng)前服務(wù)器的IP地址!{linux 中配置代理服務(wù)器IP}

? ? ? ? ? ? ? ? ? ? ? ? ? ? 主要用戶對(duì)JWT生成字符串的時(shí)候,進(jìn)行加密{鹽值}

? ? ? ? ? ? ? ? ? ? ? ? ? ? 最終組成:key+salt+userInfo è token!

? ? ? ? ? ? ? ? ? ? ? ? ? ? base64編碼:并不是加密,只是把明文信息變成了不可見(jiàn)的字符串

? ? ? ? ? ? ? ? ? ? ? ? ? ? 但是其實(shí)只要用一些工具就 ,可以把base64編碼解成明文

? ? ? ? ? ? ? ? ? ? ? ? ? ? 所以不要在JWT中放入涉及私密信息

2.官網(wǎng):

? ? JSON Web Token Introduction - jwt.iohttps://jwt.io/introduction

3.SpringBoot集成JWT:

? (2.1)pom.xml文件:

 ? ? ? ? ? ? ? ? ? ? ? ? ? ?io.jsonwebtoken ? ? ? ? ? ?jjwt ? ? ? ?

? (2.2)業(yè)務(wù)編寫(xiě):

 ? ? ? ?import io.jsonwebtoken.*; ? ? ? ?import org.springframework.util.StringUtils; ? ? ? ?import java.util.Date;? ? ? ? ?/** ? ? ? ? * JWT生成token工具類 ? ? ? ? */ ? ? ? ?public class JwtHelper {? ? ? ? ? ? ?//過(guò)期時(shí)間 ? ? ? ? ? ?private static long tokenExpiration = 24*60*60*1000; ? ? ? ? ? ?//簽名秘鑰 ? ? ? ? ? ?private static String tokenSignKey = "123456";? ? ? ? ? ? ?//根據(jù)參數(shù)生成token ? ? ? ? ? ?public static String createToken(Long userId, String userName) { ? ? ? ? ? ? ? ?String token = Jwts.builder() ? ? ? ? ? ? ? ? ? ? ?  .setSubject("項(xiàng)目名或其它") ? ? ? ? ? ? ? ? ? ? ?  .setExpiration(new Date(System.currentTimeMillis() + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?tokenExpiration)) ? ? ? ? ? ? ? ? ? ? ?  .claim("userId", userId) ? ? ? ? ? ? ? ? ? ? ?  .claim("userName", userName) ? ? ? ? ? ? ? ? ? ? ?  .signWith(SignatureAlgorithm.HS512, tokenSignKey) ? ? ? ? ? ? ? ? ? ? ?  .compressWith(CompressionCodecs.GZIP) ? ? ? ? ? ? ? ? ? ? ?  .compact(); ? ? ? ? ? ? ? ?return token; ? ? ? ? ?  }? ? ? ? ? ? ?//根據(jù)token字符串得到用戶id ? ? ? ? ? ?public static Long getUserId(String token) { ? ? ? ? ? ? ? ?if(StringUtils.isEmpty(token)) return null;? ? ? ? ? ? ? ? ?Jws claimsJws = ? ? ? ? ? ? ? ? ? ?  ? ? ? ? ? ? ? ? ? ? ? ?Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token); ? ? ? ? ? ? ? ?Claims claims = claimsJws.getBody(); ? ? ? ? ? ? ? ?Integer userId = (Integer)claims.get("userId"); ? ? ? ? ? ? ? ?return userId.longValue(); ? ? ? ? ?  }? ? ? ? ? ? ?//根據(jù)token字符串得到用戶名稱 ? ? ? ? ? ?public static String getUserName(String token) { ? ? ? ? ? ? ? ?if(StringUtils.isEmpty(token)) return "";? ? ? ? ? ? ? ? ?Jws claimsJws = ? ? ? ? ? ? ? ? ? ? ? ? ? Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token); ? ? ? ? ? ? ? ?Claims claims = claimsJws.getBody(); ? ? ? ? ? ? ? ?return (String)claims.get("userName"); ? ? ? ? ?  }? ? ? ? ? ? ?public static void main(String[] args) { ? ? ? ? ? ? ? ?String token = JwtHelper.createToken(1L, "lucy"); ? ? ? ? ? ? ? ?System.out.println(token); ? ? ? ? ? ? ? ?System.out.println(JwtHelper.getUserId(token)); ? ? ? ? ? ? ? ?System.out.println(JwtHelper.getUserName(token)); ? ? ? ? ?  } ? ? ?  }

? (2.3)業(yè)務(wù)測(cè)試:

? ? ? ? ? ? ? ? 在需要生成token調(diào)用JWT工具類生成即可

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/122096.html

相關(guān)文章

  • songEagle開(kāi)發(fā)系列:Vue + Vuex + Koa 中使用JWT認(rèn)證

    摘要:一前言,是為了在網(wǎng)絡(luò)環(huán)境間傳遞聲明而執(zhí)行的一種基于的開(kāi)放標(biāo)準(zhǔn)。用戶簽發(fā)添加中間件校驗(yàn)判斷是否可用獲取解密,獲取用戶名和認(rèn)證失敗中添加處理此處在開(kāi)發(fā)時(shí)需要過(guò)濾掉登錄接口,否則會(huì)導(dǎo)致驗(yàn)證永遠(yuǎn)失敗。前端處理前端開(kāi)發(fā)使用的是,發(fā)送請(qǐng)求使用的是。 一、前言 JWT(JSON Web Token),是為了在網(wǎng)絡(luò)環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開(kāi)放標(biāo)準(zhǔn)(RFC 7519)。 JWT不是一個(gè)新...

    suosuopuo 評(píng)論0 收藏0
  • 如何在SpringBoot中集成JWT(JSON Web Token)鑒權(quán)

    摘要:在使用非對(duì)稱加密算法進(jìn)行簽名的時(shí)候,還可以用于驗(yàn)證的發(fā)件人是否與中申明的發(fā)件人是同一個(gè)人。如果沒(méi)有用非對(duì)稱加密算法的話,把復(fù)制之后直接可以去官網(wǎng)在線解析。 這篇博客主要是簡(jiǎn)單介紹了一下什么是JWT,以及如何在Spring Boot項(xiàng)目中使用JWT(JSON Web Token)。 1.關(guān)于JWT 1.1 什么是JWT 老生常談的開(kāi)頭,我們要用這樣一種工具,首先得知道以下幾個(gè)問(wèn)題。 這...

    yeyan1996 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<