第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將 JWT 有效負(fù)載轉(zhuǎn)換回結(jié)構(gòu)

將 JWT 有效負(fù)載轉(zhuǎn)換回結(jié)構(gòu)

Go
慕容3067478 2023-07-17 14:15:45
我在將 JWT 有效負(fù)載轉(zhuǎn)換回 golang 中的結(jié)構(gòu)時(shí)遇到問題我有兩臺(tái)相互通信的服務(wù)器,并有 JWT 身份驗(yàn)證來加強(qiáng)安全性。有效負(fù)載使用以下結(jié)構(gòu)type ResponseBody struct {    Header       dto.MessageHeader       `json:"message_header"`    OrderBodyParams dto.OrderBodyParams `json:"order_response"`    Status              string                  `json:"status"`    ErrorMessage        string                  `json:"errors"`}服務(wù)器 A 獲取此結(jié)構(gòu) - 將其轉(zhuǎn)換為字節(jié)日期并將其作為 JWT 有效負(fù)載發(fā)送相關(guān)代碼如下func request(secretKey string, path string, method string, requestParams interface{}, response interface{}) error {    tr := &http.Transport{        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},    }    client := &http.Client{        Timeout:   time.Second * 15,        Transport: tr,    }    //convert body into byte data    requestBody, err := json.Marshal(requestParams)    if err != nil {        return err    }    tokenString, expirationTime, err := authentication.GenerateJWTAuthToken(secretKey, requestBody)    if err != nil {      return err    }    req, _ := http.NewRequest(method, path, bytes.NewBuffer([]byte(tokenString)))    req.Header.Set("Content-Type", "application/json")    req.AddCookie(&http.Cookie{        Name:    "token",        Value:   tokenString,        Expires: expirationTime,    })    _, err = client.Do(req)    if err != nil {       return err    }    return nil}正如您所看到的,我只是將正文轉(zhuǎn)換為字節(jié)數(shù)據(jù) - 并將其轉(zhuǎn)換為 JWT 有效負(fù)載函數(shù)GenerateJWTAuthToken如下所示type Claims struct {    Payload []byte `json:"payload"`    jwt.StandardClaims}func GenerateJWTAuthToken(secretKey string, payload []byte) (string, time.Time, error) {    var jwtKey = []byte(secretKey)    // Set expiration to 5 minutes from now (Maybe lesser?)    expirationTime := time.Now().Add(5 * time.Minute)    // create the payload    claims := &Claims{        Payload: payload,        StandardClaims: jwt.StandardClaims{            ExpiresAt: expirationTime.Unix(),        },    }
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

您正在使用 JSON 來編組您的結(jié)構(gòu):

requestBody, err := json.Marshal(requestParams)`

因此,您應(yīng)該使用 JSON 解組來獲取結(jié)構(gòu)。然而,你習(xí)慣于binary.Read()閱讀它:

err = binary.Read(bytes.NewReader(payload), binary.LittleEndian, &requestData)

相反,這樣做:

err = json.Unmarshal(payload, &requestData)


查看完整回答
反對 回復(fù) 2023-07-17
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)