东林博客

Go中使用JWT生成token

为什么使用JWT?

随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。

JWT架构图


在Go语言中使用JWT

首先安装Go的JWT扩展:github.com/dgrijalva/jwt-go

go get github.com/dgrijalva/jwt-go

安装成功后,便可以使用了:

token := jwt.New(jwt.SigningMethodHS256)

claims := make(jwt.MapClaims)
claims["exp"] = time.Now().Add(time.Hour * time.Duration(1)).Unix() //设置token的过期时间
claims["user_id"] = user["id"] // 设置token的UID
token.Claims = claims

SecretKey := `QVis6RYNiVB7N4sOmeCaZbKZsttgMhnHPvRiXf4h98FCggGTFmoYeNQNvIqB8OQW`  // 设置自己的密钥
tokenString, _ := token.SignedString([]byte(SecretKey))  // 生成tokenString


{{tip}}