golang常用库之-golang-jwt/jwt包
golang-jwt/jwt包
github: https://github.com/golang-jwt/jwt
golang-jwt/jwt 是一个在 Go 语言中使用 JSON Web Tokens(JWT)进行身份验证和授权的库。JWT 是一种用于在跨网络进行安全通信的开放标准(RFC 7519),它使用一个 JSON 对象来表示被声明的安全性信息。
golang-jwt/jwt 包提供了创建、解析和验证 JWT 的功能。你可以使用它来生成 JWT、将用户数据编码为 JWT 格式、验证和解析 JWT,以及处理 JWT 中的声明和签名等。
使用demo
生成JWT令牌
type AuthClaims struct {
Username string `json:"username"`
jwt.StandardClaims
}
func GeneralJwtToken(userName string) (string, error) {
return CreateToken(AuthClaims{
Username: userName,
StandardClaims: jwt.StandardClaims{
ExpiresAt: time.Now().Add(JWTExpireMinute * time.Minute).Unix(),
},
}, APITokenSecret)
}
func CreateToken(payload jwt.Claims, secret []byte) (string, error) {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, payload)
tokenString, err := token.SignedString(secret)
if err != nil {
return "", err
}
return tokenString, nil
}
AuthClaims是一个结构体类型,用于存储JWT令牌的声明信息。它包含了两个字段:Username和StandardClaims。
Username是一个字符串类型的字段,用于存储JWT令牌中的用户名。它被标记为json:“username”,表示在将该结构体编码为JSON格式时,该字段应该使用username作为键名。
StandardClaims是一个使用jwt.StandardClaims类型的匿名字段。这意味着AuthClaims结构体具有jwt.StandardClaims类型的所有字段和方法。jwt.StandardClaims是JWT库提供的一个结构体,其中包含了JWT的标准声明信息,如过期时间(ExpiresAt)、签发时间(IssuedAt)和JWT ID(Id)。通过嵌入jwt.StandardClaims,AuthClaims结构体可以继承这些标准声明信息,避免了重复定义这些字段。
综上所述,AuthClaims结构体用于定义JWT令牌的声明信息,**并通过嵌入jwt.StandardClaims来继承标准声明信息。**它的Username字段用于存储JWT令牌中的用户名,并在编码为JSON格式时使用username作为键名。文章来源:https://www.toymoban.com/news/detail-817854.html
CreateToken函数接受两个参数:payload和secret。payload是一个实现了jwt.Claims
接口的结构体,用于包含JWT令牌的声明信息。在这里,payload被传递为AuthClaims结构体,其中包含了用户名和标准声明信息。secret是一个字节数组,用作对JWT进行签名的密钥。文章来源地址https://www.toymoban.com/news/detail-817854.html
到了这里,关于golang常用库之-golang-jwt/jwt包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!