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
本文暂时没有评论,来添加一个吧(●'◡'●)