返回顶部
首页 > 资讯 > 精选 >令牌签名后 JWT 声明不保留
  • 859
分享到

令牌签名后 JWT 声明不保留

2024-02-14 09:02:51 859人浏览 独家记忆
摘要

PHP小编香蕉在本文中将介绍Jwt(JSON WEB Token)中的一个重要概念:令牌签名。JWT是一种用于在网络应用之间传递信息的安全标准。在JWT中,令牌签名是一种保护令牌完整性

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

问题内容

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

代码:


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 声明不保留的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 令牌签名后 JWT 声明不保留

本文链接: https://lsjlt.com/news/564372.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作