[Go] go语言使用dgrijalva/jwt-go 实现加解密jwt
2023-02-18 15:36:26 时间
当开发登录验证系统的时候
现在基本都是使用的jwt来实现的权限校验
这时候就涉及到了jwt的加密和解密
可以参考下面的使用方法
tools/jwt.go
package tools import ( "github.com/dgrijalva/jwt-go" "time" ) const SECRET = "taoshihan" type UserClaims struct { Id uint `json:"id"` Pid uint `json:"pid"` Username string `json:"username"` RoleId uint `json:"role_id"` CreateTime time.Time `json:"create_time"` jwt.StandardClaims } func MakeCliamsToken(obj UserClaims) (string, error) { token := jwt.NewWithClaims(jwt.SigningMethodHS256, obj) tokenString, err := token.SignedString([]byte(SECRET)) return tokenString, err } func ParseCliamsToken(token string) (*UserClaims, error) { tokenClaims, err := jwt.ParseWithClaims(token, &UserClaims{}, func(token *jwt.Token) (interface{}, error) { return []byte(SECRET), nil }) if tokenClaims != nil { if claims, ok := tokenClaims.Claims.(*UserClaims); ok && tokenClaims.Valid { return claims, nil } } return nil, err }
测试
tools/jwt_test.go
package tools import ( "github.com/dgrijalva/jwt-go" "testing" "time" ) func TestJwt(t *testing.T) { tokenCliams := UserClaims{ Id: 1, Username: "kefu2", RoleId: 2, Pid: 1, CreateTime: time.Now(), StandardClaims: jwt.StandardClaims{ ExpiresAt: time.Now().Unix() + 24*3600, }, } token, err := MakeCliamsToken(tokenCliams) t.Log(token, err) orgToken, err := ParseCliamsToken(token) t.Logf("%+v,%+v", orgToken, err) }
运行测试用例,可以看到加解密效果
可以测试下过期
相关文章
- [Go] 利用有缓存channel控制同时并发的数量
- [Git]将github的https地址改为ssh形式
- [Go] 利用channel形成管道沟通循环内外
- [Linux] shell中for循环grep正则统计指定关键字
- [Git]windows下设置ssh keys 免密push到github
- [Go] go mod下载的依赖包位置
- [Go] 测试go连接imap的tcp长连接
- [Go] go mod 设置GOPROXY环境变量中的direct意义
- [Go] 写文件和判断文件是否存在
- [日常] 解决github速度特别慢
- [Go] imap收信非并发
- [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.3.2发布-极简强大Go语言开发网页客服
- [Linux] 使用secureCRT实现SSH隧道服务器端口转发到本机内网穿透
- [Linux] 解决nginx: [emerg] directive "rewrite" is not terminated by ";"
- [Go] gocron源码阅读-判断是否使用root用户执行
- [Go] 使用go mod安装beego
- [Go] linux下安装go1.16
- [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.2.9发布-极简强大Go语言开发网页客服
- [Go] tcp服务下的数据传递
- [Go] gocron源码阅读-go语言web框架Macaron