Golang token的生成和解析详解

2024-03-01 0 541

Golang token的生成和解析

使用第三方库来实现

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 {
// 创建一个Token对象
token := jwt.New(jwt.SigningMethodHS256)

// 设置Token的自定义声明
claims := token.Claims.(jwt.MapClaims)
claims[\”username\”] = username
claims[\”exp\”] = time.Now().Add(time.Hour * 24).Unix() // 设置Token的过期时间

// 使用密钥对Token进行签名,生成最终的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
}

// 验证Token的签名方法是否有效
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf(\”无效的签名方法:%v\”, token.Header[\”alg\”])
}

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

return nil, fmt.Errorf(\”无效的Token\”)
}

消息中间件

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

到此这篇关于Golang token的生成和解析详解的文章就介绍到这了,更多相关Golang token生成和解析内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • 使用golang脚本基于kubeadm创建新的token(问题分析)
  • golang中gin框架接入jwt使用token验证身份
  • golang jwt+token验证的实现
  • gogin+token(JWT)验证实现登陆验证

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Golang Golang token的生成和解析详解 https://www.u-9.cn/jiaoben/golang/179208.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务