토큰 서명 후 JWT 청구가 보존되지 않음

王林
풀어 주다: 2024-02-14 09:40:09
앞으로
615명이 탐색했습니다.

令牌签名后 JWT 声明不保留

php 편집기 Banana는 이 기사에서 JWT(JSON 웹 토큰)의 중요한 개념인 토큰 서명을 소개합니다. JWT는 웹 애플리케이션 간에 정보를 전달하기 위한 보안 표준입니다. JWT에서 토큰 서명은 토큰의 무결성과 신뢰성을 보호하는 메커니즘입니다. 토큰이 서명되면 토큰의 변조 또는 위조가 즉시 감지됩니다. 그러나 때로는 특정 상황에서 JWT 클레임의 서명을 유지하지 않아야 할 수도 있으며, 이 문서에서는 이 요구 사항을 달성하는 방법을 자세히 설명합니다.

질문 내용

다음과 같은 코드가 있습니다. 저는 사용자 정의 클레임을 사용하여 json 웹 토큰을 생성하고 있습니다(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)

}

로그인 후 복사

해결 방법

사용자 ID 필드를 내보내야 합니다(대문자로 시작해야 함). 내보내지 않은 필드는 json으로 인코딩될 수 없습니다.

으아아아

위 내용은 토큰 서명 후 JWT 청구가 보존되지 않음의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!