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

go語言使用jwt認(rèn)證的實(shí)現(xiàn)

 更新時間:2022年04月20日 15:01:02   作者:sywdebug  
本文主要介紹了go語言使用jwt認(rèn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

這幾天在學(xué)習(xí)nodejs,進(jìn)一步了解npm,學(xué)習(xí)過程中解開了以前的一個疑惑,以前不知道token可以攜帶信息,只以為是用來做對比的,學(xué)到了jwt身份認(rèn)證,知道了如何使用的,感覺很好用,但是我不用nodejs開發(fā),所以就去看了下golang的,做下記錄

剛學(xué),博客內(nèi)容寫的可能不大對,因為基本都是自己的理解,術(shù)語用的可能也不到位,但是用起來倒是沒問題,見諒

golang-jwt 項目倉庫

使用以下命令獲取

go get github.com/golang-jwt/jwt

加密

首先聲明一串用于加密解密的秘鑰

mySigningKey := []byte("asfasfdafasdfdasfa.")

然后使用jwt.NewWithClaimsnew一個token,這個玩意有兩個參數(shù),返回值就是token

第一個是加密方法,我這里使用的是hs256加密

第二個是加密的一些參數(shù),可以使用自帶的jwt.MapClaims,也可以自定義一個結(jié)構(gòu)體,如果是自定義結(jié)構(gòu)體需要實(shí)現(xiàn)jwt.StandardClaims結(jié)構(gòu)體,里面可以定義過期時間頒發(fā)者等等

jwt.StandardClaims示例

jwt.MapClaims示例

我這里使用的是jwt.MapClaims,里面也可以定義過期時間等等,不同的就是寫法不一樣,我這里舉例子設(shè)置過期時間為5秒

token:=jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
	"name": "司大帥",
	"exp": time.Now().Unix() + 5,
	"iss": "sywdebug",
})

下圖就是token打印出來的結(jié)果

token輸出示例

在將token返回給前端時候需要使用自己聲明的秘鑰加密一下,再返回給前端

tokenString, err := token.SignedString(mySigningKey)
if err != nil {
	log.Println(err.Error())
	return
}
fmt.Println("加密后的token字符串", tokenString)

加密后的token字符串

在前端登錄時,將加密后的token字符串返回給前端,在調(diào)用需要驗證的接口時將 token 傳回后端,在后端進(jìn)行解密驗證

解密

解密使用jwt.Parse方法,如果上面使用了自定義結(jié)構(gòu)體的話就使用jwt.ParseWithClaims方法
jwt.Parse有兩個參數(shù)
第一個就是加密后的token字符串
第二個是一個自帶的回調(diào)函數(shù),將秘鑰和錯誤return出來即可
jwt.ParseWithClaims有三個參數(shù)
第一個就是加密后的token字符串
第二個是加密使用的模板,例如上面示例將qqq傳入即可
第三個是一個自帶的回調(diào)函數(shù),將秘鑰和錯誤return出來即可

//在這里如果也使用jwt.ParseWithClaims的話,第二個參數(shù)就寫jwt.MapClaims{}
//例如jwt.ParseWithClaims(tokenString, jwt.MapClaims{},func(t *jwt.Token) (interface{}, error){}

token, err = jwt.Parse(tokenString, func(t *jwt.Token) (interface{}, error) {
	return mySigningKey, nil
})
if err != nil {
	log.Println(err.Error())
	return
}
fmt.Println("token:", token)
fmt.Println("token.Claims:", token.Claims)
fmt.Println(token.Claims.(jwt.MapClaims)["name"])

結(jié)果示例

上面給的過期時間是5秒,如果加一個6秒的延遲再執(zhí)行解析,就會返回token已過期了

token已過期示例

 到此這篇關(guān)于go語言使用jwt認(rèn)證的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)go語言 jwt認(rèn)證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用GoLang?Fiber進(jìn)行高性能Web開發(fā)實(shí)例詳解

    利用GoLang?Fiber進(jìn)行高性能Web開發(fā)實(shí)例詳解

    這篇文章主要為大家介紹了利用GoLang?Fiber進(jìn)行高性能Web開發(fā)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 深入分析golang多值返回以及閉包的實(shí)現(xiàn)

    深入分析golang多值返回以及閉包的實(shí)現(xiàn)

    相對于C/C++,golang有很多新穎的特性,例如goroutine,channel等等,這些特性其實(shí)從golang源碼是可以理解其實(shí)現(xiàn)的原理。今天這篇文章主要來分析下golang多值返回以及閉包的實(shí)現(xiàn),因為這兩個實(shí)現(xiàn)golang源碼中并不存在,我們必須從匯編的角度來窺探二者的實(shí)現(xiàn)。
    2016-09-09
  • Golang中調(diào)用deepseekr1的教程詳解

    Golang中調(diào)用deepseekr1的教程詳解

    這篇文章主要為大家詳細(xì)介紹了Golang中調(diào)用deepseekr1的相關(guān)教程,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以了解下
    2025-02-02
  • Go語言學(xué)習(xí)之運(yùn)算符使用詳解

    Go語言學(xué)習(xí)之運(yùn)算符使用詳解

    這篇文章主要介紹了Go語言中常用運(yùn)算符的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Go語言實(shí)現(xiàn)優(yōu)雅關(guān)機(jī)和重啟的示例詳解

    Go語言實(shí)現(xiàn)優(yōu)雅關(guān)機(jī)和重啟的示例詳解

    在Go語言中,實(shí)現(xiàn)優(yōu)雅關(guān)機(jī)和重啟通常涉及到處理系統(tǒng)信號,并確保在關(guān)閉前完成所有必要的清理工作,下面我們就來看看如何使用http.Server和os/signal包來實(shí)現(xiàn)優(yōu)雅關(guān)機(jī)和重啟吧
    2025-05-05
  • 解決go獲取文件md5值不正確的問題

    解決go獲取文件md5值不正確的問題

    本文主要介紹了解決go獲取文件md5值不正確的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Go與Redis實(shí)現(xiàn)分布式互斥鎖和紅鎖

    Go與Redis實(shí)現(xiàn)分布式互斥鎖和紅鎖

    這篇文章主要介紹了Go與Redis實(shí)現(xiàn)分布式互斥鎖和紅鎖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 淺析Golang開發(fā)中g(shù)oroutine的正確使用姿勢

    淺析Golang開發(fā)中g(shù)oroutine的正確使用姿勢

    很多初級的Gopher在學(xué)習(xí)了goroutine之后,在項目中其實(shí)使用率不高,所以這篇文章小編主要來帶大家深入了解一下goroutine的常見使用方法,希望對大家有所幫助
    2024-03-03
  • Go基礎(chǔ)Slice教程詳解

    Go基礎(chǔ)Slice教程詳解

    這篇文章主要介紹了Go基礎(chǔ)Slice教程詳解,需要的朋友可以參考下
    2018-02-02
  • Golang迭代如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解

    Golang迭代如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解

    這篇文章主要為大家介紹了Golang迭代之如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評論

延长县| 壤塘县| 新郑市| 迁西县| 平昌县| 卢氏县| 扎囊县| 恩平市| 太谷县| 拜泉县| 璧山县| 黔西县| 湄潭县| 阿勒泰市| 江北区| 崇信县| 邢台市| 星子县| 云阳县| 安陆市| 泸西县| 刚察县| 区。| 永春县| 湘阴县| 武乡县| 达孜县| 乌恰县| 鹤峰县| 宜兰市| 临高县| 宝山区| 营山县| 阿拉善左旗| 井冈山市| 铜山县| 娄底市| 麟游县| 凌源市| 当阳市| 泰兴市|