登录
首页 >  Golang >  Go问答

如何获取在 go Fiber 中的 JSON 值?

来源:stackoverflow

时间:2024-02-19 10:45:23 286浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何获取在 go Fiber 中的 JSON 值?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

这是我写的代码。当我使用 token.claims 方法时,它返回以下结果。我还需要访问电子邮件值来检查用户是否是谁。当我使用 token.claims.email 时,它会抛出错误。

func User(c *fiber.Ctx) error {
    cookie := c.Cookies("jwt")
    claims := jwt.MapClaims{}
    token, _ := jwt.ParseWithClaims(cookie, claims, func(token *jwt.Token) (interface{}, error) {
        return []byte(SecretKey), nil
    })

    return c.JSON(token.Claims)
}

这是邮递员的回复。如何访问以下电子邮件地址


正确答案


只要检查您的代码,我就猜测您正在使用这个 golang-jwt 软件包。

调用 jwt.parsewithclaims 后,您应该能够通过代码中已创建的名为 claimsjwt.mapclaims 对象访问您的声明。

没有 fiber 的示例,仅使用 golang-jwt,但逻辑保持不变:

package main

import (
    "fmt"
    "github.com/golang-jwt/jwt/v4"
)

// Created on https://jwt.io/
const tokenString = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRlc3RAbWFpbC5jaCJ9.Iv6oZWIX7Rrtag4d6h3-eJ3xdXLwoZ9PbotcvbjOvhI"
// Just as an example, make sure to pick a stronger key
const key = "1234567890"

func main() {
    claims := jwt.MapClaims{}
    token, err := jwt.ParseWithClaims(tokenString, claims, keyFunc)
    if err != nil {
        panic(err)
    }
    fmt.Println(token.Valid)
    email, ok := claims["email"].(string)
    if !ok {
        panic("Couldn't parse email as string")
    }
    fmt.Println(email)
}

func keyFunc(*jwt.Token) (interface{}, error) {
    return []byte(key), nil
}

到这里,我们也就讲完了《如何获取在 go Fiber 中的 JSON 值?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>