首页 > 后端开发 > Golang > 正文

令牌签名后 JWT 声明不保留

王林
发布: 2024-02-14 09:40:09
转载
647人浏览过

令牌签名后 jwt 声明不保留

php小编香蕉在本文中将介绍JWT(JSON Web Token)中的一个重要概念:令牌签名。JWT是一种用于在网络应用之间传递信息的安全标准。在JWT中,令牌签名是一种保护令牌完整性和真实性的机制。一旦令牌被签名,任何对令牌的篡改或伪造都将被立即检测到。然而,有时候我们可能需要在某些情况下不保留JWT声明的签名,本文将详细解释如何实现这一需求。

问题内容

我有以下代码。我正在使用自定义声明创建一个 json web 令牌(使用 golang-jwt)。问题是,当我使用密钥(方法 = hs256)签署令牌然后解析令牌时,声明会发生更改。我犯了什么错误。

代码:

NameGPT名称生成器
NameGPT名称生成器

免费AI公司名称生成器,AI在线生成企业名称,注册公司名称起名大全。

NameGPT名称生成器 0
查看详情 NameGPT名称生成器
package main

import (
    "fmt"
    "time"

    "github.com/golang-jwt/jwt/v4"
)

type mycustomclaims struct {
    userid int
    jwt.registeredclaims
}

func (app *config) generatejwt(userid int) {

    //code to generate jwt
    jt := jwt.newwithclaims(jwt.signingmethodhs256, mycustomclaims{
        userid,
        jwt.registeredclaims{
            expiresat: jwt.newnumericdate(time.now().add(3 * time.hour)),
            issuedat:  jwt.newnumericdate(time.now()),
        },
    })

    fmt.println("what was put", jt.claims.(mycustomclaims).userid)
    token, _ := jt.signedstring(app.secret)

    //code to check whether claims are retained
    parsed_token, _ := jwt.parsewithclaims(token, &mycustomclaims{}, func(t *jwt.token) (interface{}, error) {
        return app.secret, nil
    })

    fmt.println("what was parsed", parsed_token.claims.(*mycustomclaims).userid)

}

登录后复制

输出

What was put 8
What was parsed 0
登录后复制

解决方法

您必须导出用户 id 字段(使其以大写字母开头)。未导出的字段无法进行 json 编码。

type MyCustomClaims struct {
    UserID int `json:"userid"`
    jwt.RegisteredClaims
}
登录后复制

以上就是令牌签名后 JWT 声明不保留的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号