欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang token的生成和解析詳解

 更新時(shí)間:2024年02月11日 10:18:58   作者:gogogo不想敲代碼  
這篇文章主要給大家介紹了Golang token的生成和解析,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

Golang token的生成和解析

使用第三方庫(kù)來(lái)實(shí)現(xiàn)

go get github.com/dgrijalva/jwt-go

golang代碼

package main

import (
	"fmt"
	"time"

	"github.com/dgrijalva/jwt-go"
)

func main() {
	// 生成Token
	tokenString := generateToken("example-user", "secret-key")
	fmt.Println("Token:", tokenString)

	// 解密Token
	claims, err := parseToken(tokenString, "secret-key")
	if err != nil {
		fmt.Println("解密Token失敗:", err)
		return
	}

	// 獲取Token中的自定義聲明
	if username, ok := claims["username"].(string); ok {
		fmt.Println("Username:", username)
	}
}

func generateToken(username string, secretKey string) string {
	// 創(chuàng)建一個(gè)Token對(duì)象
	token := jwt.New(jwt.SigningMethodHS256)

	// 設(shè)置Token的自定義聲明
	claims := token.Claims.(jwt.MapClaims)
	claims["username"] = username
	claims["exp"] = time.Now().Add(time.Hour * 24).Unix() // 設(shè)置Token的過(guò)期時(shí)間

	// 使用密鑰對(duì)Token進(jìn)行簽名,生成最終的Token字符串
	tokenString, _ := token.SignedString([]byte(secretKey))

	return tokenString
}

func parseToken(tokenString string, secretKey string) (jwt.MapClaims, error) {
	// 解析Token字符串
	token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
		return []byte(secretKey), nil
	})

	if err != nil {
		return nil, err
	}

	// 驗(yàn)證Token的簽名方法是否有效
	if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
		return nil, fmt.Errorf("無(wú)效的簽名方法:%v", token.Header["alg"])
	}

	// 返回Token中的聲明部分
	if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
		return claims, nil
	}

	return nil, fmt.Errorf("無(wú)效的Token")
}

消息中間件

func JWT() gin.HandlerFunc {
	return func(c *gin.Context) {
		c.Abort()
		c.Next()
	}
}

到此這篇關(guān)于Golang token的生成和解析詳解的文章就介紹到這了,更多相關(guān)Golang token生成和解析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang二進(jìn)制反匯編問(wèn)題

    Golang二進(jìn)制反匯編問(wèn)題

    這篇文章主要介紹了Golang二進(jìn)制反匯編問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Golang?依賴注入經(jīng)典解決方案uber/fx理論解析

    Golang?依賴注入經(jīng)典解決方案uber/fx理論解析

    這篇文章主要為大家介紹了Golang依賴注入經(jīng)典解決方案uber/fx理論解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Go 中閉包的底層原理

    Go 中閉包的底層原理

    這篇文章主要介紹了Go 中閉包的底層原理,閉包的基本原理是一種現(xiàn)象,一個(gè)函數(shù)內(nèi)引用了外部的局部變量的現(xiàn)象,帶著些許的了解和小編一起進(jìn)入文章正題學(xué)習(xí)
    2021-10-10
  • 深入探討Go語(yǔ)言中的預(yù)防性接口為什么是不必要的

    深入探討Go語(yǔ)言中的預(yù)防性接口為什么是不必要的

    在Go語(yǔ)言中,有一種從其他語(yǔ)言帶來(lái)的常見(jiàn)模式:預(yù)防性接口,雖然這種模式在?Java?等語(yǔ)言中很有價(jià)值,但在Go中往往會(huì)成為反模式,本文我們就來(lái)深入探討一下原因
    2025-01-01
  • OpenTelemetry-go的SDK使用方法詳解

    OpenTelemetry-go的SDK使用方法詳解

    這篇文章主要介紹了OpenTelemetry-go的SDK使用方法,OpenTelemetry幫我們實(shí)現(xiàn)了相應(yīng)語(yǔ)言的SDK,所以我們只需要進(jìn)行調(diào)用即可,本文根據(jù)官方文檔實(shí)例講解,需要的朋友可以參考下
    2022-09-09
  • 探索Go語(yǔ)言中的switch高級(jí)用法

    探索Go語(yǔ)言中的switch高級(jí)用法

    在Go語(yǔ)言中,switch語(yǔ)句除了常見(jiàn)的用法外,還有一種不常用但有趣的寫法,這種寫法中,switch后面不跟任何表達(dá)式,而每個(gè)case后面跟的是返回bool類型的函數(shù)調(diào)用表達(dá)式,這實(shí)際上是一個(gè)等價(jià)于switch true的用法,通過(guò)從上到下逐一比較case后的表達(dá)式是否為true來(lái)決定執(zhí)行哪個(gè)分支
    2024-10-10
  • Golang通道的無(wú)阻塞讀寫的方法示例

    Golang通道的無(wú)阻塞讀寫的方法示例

    這篇文章主要介紹了Golang通道的無(wú)阻塞讀寫的方法示例,詳細(xì)的介紹了哪些情況會(huì)存在阻塞,以及如何使用select解決阻塞,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • GoLang中socket心跳檢測(cè)的實(shí)現(xiàn)

    GoLang中socket心跳檢測(cè)的實(shí)現(xiàn)

    本文主要介紹了GoLang中socket心跳檢測(cè)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • Golang收支記賬程序詳細(xì)編寫過(guò)程

    Golang收支記賬程序詳細(xì)編寫過(guò)程

    這篇文章主要介紹了Golang實(shí)現(xiàn)收支記賬程序流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12
  • 一文理解Go 中的可尋址和不可尋址

    一文理解Go 中的可尋址和不可尋址

    如果字典的元素不存在,則返回零值,而零值是不可變對(duì)象,如果能尋址問(wèn)題就大了。而如果字典的元素存在,考慮到 Go 中 map 實(shí)現(xiàn)中元素的地址是變化的,這意味著尋址的結(jié)果也是無(wú)意義的。下面我們就圍繞這個(gè)話題寫一篇文章吧,需要的朋友可以參考一下
    2021-10-10

最新評(píng)論