当前位置:网站首页>go jwt use
go jwt use
2022-07-30 01:51:00 【give me a bottle of ice kuoluo】
go jwt encryption and decryption
package mainimport ("errors""fmt""github.com/golang-jwt/jwt""log""time")//Custom encrypted structure data needs to implement the jwt.StandardClaims methodtype Test struct{Name string `json:"name"`Context string `json:"context"`jwt.StandardClaims}var SignKey = []byte("1123654gfdhgfd")func main() {a := Test{Name: "v_6556u",Context: "Hahaha",StandardClaims: jwt.StandardClaims{NotBefore: time.Now().Unix() , // start effective timeExpiresAt: time.Now().Unix() + 20 ,// Expiration time (expires after 5 seconds)Issuer:"xuzhi",//issuer},}//jwt.NewWithClaims generates token//jwt.SigningMethodHS256 encryption methodtoken := jwt.NewWithClaims(jwt.SigningMethodHS256, a)//Use custom body atokenString, err := token.SignedString(SignKey)if err != nil {fmt.Println("error")log.Println(err.Error())return}fmt.Println("Encrypted token string:", tokenString)// decrypts,err := ParseToken(tokenString)if err != nil {log.Panicln(err.Error())}fmt.Println("Decryption: ",s)fmt.Println("=========================================")tokenA := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{//The built-in jwt.MapClaims"name": "Master Secretary","content":"asdfg","exp": time.Now().Unix(),"iss": "lisa",})//token.SignedString converts token to stringtokenStringA, err := tokenA.SignedString(SignKey)if err != nil {fmt.Println("error")log.Println(err.Error())return}fmt.Println("encrypted token string", tokenStringA)//If jwt.ParseWithClaims is also used here, the second parameter is written jwt.MapClaims{}//For example jwt.ParseWithClaims(tokenString, jwt.MapClaims{},func(t *jwt.Token) (interface{}, error){}fmt.Println(jwt_decode(tokenStringA, SignKey))}//Decrypt the built-in jwt.MapClaimsfunc jwt_decode(token string, SignKey []byte)map[string]interface{}{token_decode, err := jwt.Parse(token, func(t *jwt.Token) (interface{}, error) {return SignKey, nil})if err != nil {log.Fatalln(err.Error())}return token_decode.Claims.(jwt.MapClaims)}// ParseToken parses JWTfunc ParseToken(tokenString string) (*Test, error) {// Parse tokentoken, err := jwt.ParseWithClaims(tokenString, &Test{}, func(token *jwt.Token) (i interface{}, err error) {return SignKey, nil})if err != nil {return nil, err}// token is validif claims, ok := token.Claims.(*Test); ok && token.Valid { // Validate tokenreturn claims, nil}return nil, errors.New("invalid token")}
边栏推荐
- 面试题:手写Promise
- Push the image to the Alibaba Cloud private warehouse
- Recommendation systems: feature engineering, common features
- 液压滑环的应用介绍
- Tcp ip
- 泰克Tektronix示波器软件TDS2012|TDS2014|TDS2022上位机软件NS-Scope
- 泰克Tektronix示波器软件TDS210|TDS220|TDS224上位机软件NS-Scope
- 多AZ双活容灾部署的云端系统架构设计说明书框架
- Performance Testing Theory 1 | Sorting out difficult problems in performance testing
- MATLAB被禁下一个会是LABVIEW吗?国产测试软件ATECLOUD崛起发力
猜你喜欢
新型海上风电机组及压缩空气储能系统的建模与控制(Matlab代码实现)
Leetcode68. 文本左右对齐
基于蒙特卡诺的风场景模型出力(Matlab代码实现)
CMake Tutorial Tour (1)_Basic starting point
畅玩西安全攻略
It is really strong to apply the @Transactional transaction annotation to such perfection!
【LeetCode每日一题】——404.左叶子之和
解决vscode的Network不显示问题
exness:美国GDP萎缩,日元反弹受捧
Recommendation systems: feature engineering, common features
随机推荐
Teach you how to achieve a flowing gradient border
基于燃压缩空气储能系统的零碳微能源互联网优化调度(Matlab代码实现)
Running a Fabric Application
视觉系统设计实例halcon-winform-11.菜单折叠与展示
MySQL高级篇(高阳)建表sql语句大全
【VMWARE--共享文件】
Type-C边充电边OTG芯片——LDR6028A
JS开发3D建模软件
Fabric Private Data Case
JNPF3.4.2系统升级公告
【2023海康威视提前批笔试题】~ 题目及参考答案
多线程---初阶
fluttter学习之ButtonStyle 、MaterialStateProperty
Towards Better Understanding of Self-Supervised Representations / Q-Score
AI落地难?云原生助力企业快速应用机器学习 MLOps
How Junior Testers Grow Fast
[机缘参悟-53]:《素书》-2-俊、豪、杰[正道章第二]
matlab洗碗机节水模型的优化设计-这是个课题名称,不是买洗碗机,审核的人仔细看下,谢谢
CVPR 2022 Best Paper -- Learning to Solve Hard Minimal Problems
What to test for app testing