企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> ### JWT (Json Web Token) ~~~ package main import ( "github.com/dgrijalva/jwt-go" "time" "fmt" ) const SecretKey = "wangweihong.com" /* iss: 签发者 sub: 面向的用户 aud: 接收方 exp: 过期时间 nbf: 生效时间 iat: 签发时间 jti: 唯一身份标识 */ func GenerateToken(Userid string) (string, error) { token := jwt.New(jwt.SigningMethodHS256) claims := make(jwt.MapClaims) claims["iat"] = time.Now().Unix() //签发时间 claims["exp"] = time.Now().Add(time.Hour * time.Duration(1)).Unix() //过期时间 claims["UserId"] = Userid token.Claims = claims return token.SignedString([]byte(SecretKey)) } func VerifyToken(TokenString string) (string, error) { token, err := jwt.Parse(TokenString, func(token *jwt.Token) (interface{}, error) { return []byte(SecretKey), nil }) if err != nil { return "", err } //取出token中的数据 if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid { return claims["UserId"].(string), err } return "", err } func main() { token, err := GenerateToken("123456789") if err != nil { fmt.Println("GenerateToken:", err.Error()) } fmt.Println("GenerateToken:", token) userId, err := VerifyToken(token) if err != nil { fmt.Println("VerifyToken:", err.Error()) } fmt.Println("VerifyToken:", userId) } ~~~ > ### 相关阅读 * [JSON Web Token 入门教程](http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html)