example02.go 1.5 KB
Newer Older
Ford committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/golang-jwt/jwt"
	"net/http"
	"time"
)

var accessKey = "next654c5506ab4fcf3e17cf970b"                  // NextHuman平台accessKey
var accessSecret = "xhInaX3Vk8Mv9KTWZMM5GoFPCf5Gf5VEMo8K9RjROw" // NextHuman平台 accessSecret

func generateToken(accessKey, accessSecret string) (string, error) {
	// 创建 JWT 的头部
	token := jwt.New(jwt.SigningMethodHS256)

	// 设置 JWT 的负载(Payload)
	claims := token.Claims.(jwt.MapClaims)
	claims["aud"] = "app"                                 // 接收者
	claims["iss"] = accessKey                             // 签发者
	claims["exp"] = time.Now().Add(time.Hour * 12).Unix() // 过期时间
	claims["iat"] = time.Now().Unix()                     // 签发时间

	// 使用 accessSecret 来签名并生成最终的 Token
	tokenString, err := token.SignedString([]byte(accessSecret))
	if err != nil {
		return "", err
	}

	return tokenString, nil
}

func main() {
	// 1.创建路由
	r := gin.Default()
	// 2.绑定路由规则,执行的函数
	// gin.Context,封装了request和response
	// 生成jwt字符串
	tokenString, err := generateToken(accessKey, accessSecret)
	if err != nil {
		fmt.Println("Token generation failed:", err)
		return
	}
	//打印这个token字符串
	//	fmt.Println("Generated Token:", tokenString)
	r.GET("/", func(c *gin.Context) {
		c.String(http.StatusOK, tokenString)
	})

	// 3.监听端口,默认在8080
	// Run("里面不指定端口号默认为8080")
	r.Run(":8081")
}