编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Golang JWT验证 - Web应用授权 - 生成Jwt

wxchong 2024-07-25 13:33:35 开源技术 58 ℃ 0 评论

JWT,全称是Json Web Token, 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权。

授权流程:

1、用户请求登录,携带用户名密码到授权中心

2、授权中心携带用户名密码,到用户中心查询用户

3、查询如果正确,生成JWT凭证

4、返回JWT给用户

package main

import (
	"github.com/dgrijalva/jwt-go"
	"testing"
	"time"
)

//定义结构体
type MyClaims struct {
	Username string `json:"username"`
	Password string `json:"password"`
	jwt.StandardClaims
}

//自定义秘钥
var keyword = "hello world"

func TestCreateJwt(t *testing.T) {
	c := MyClaims{
		Username: "admin", //鉴权的用户名
		Password: "123",   //鉴权的密码
		StandardClaims: jwt.StandardClaims{
			Audience:  "",
			ExpiresAt: time.Now().Add(time.Hour * 1).Unix(), //鉴权的到期时间
			Issuer:    "fox", //鉴权的签发人
		},
	}

	token := jwt.NewWithClaims(jwt.SigningMethodHS256, c) 
	signedString, err := token.SignedString([]byte(keyword))
	if err != nil {
		t.Log(err)
		return
	}
	t.Log(signedString)
}

执行结果

GOROOT=C:\Go #gosetup
GOPATH=C:\Users\Administrator\go #gosetup
C:\Go\bin\go.exe test -c -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___api_server__TestCreateJwt.test.exe api-server #gosetup
C:\Go\bin\go.exe tool test2json -t C:\Users\Administrator\AppData\Local\Temp\GoLand\___api_server__TestCreateJwt.test.exe -test.v -test.paniconexit0 -test.run ^\QTestCreateJwt\E$ #gosetup
=== RUN   TestCreateJwt
    main_test.go:34: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwicGFzc3dvcmQiOiIxMjMiLCJleHAiOjE2NTk3OTQzODQsImlzcyI6ImZveCJ9.Tdrl7fG1O23YhS5bPELPq3inAkrRLusU4h5NM1KKKgU
--- PASS: TestCreateJwt (0.00s)
PASS


进程 已完成,退出代码为 0

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表