【问题标题】:Using jwt-go Library - key is of invalid type使用 jwt-go 库 - 密钥类型无效
【发布时间】:2020-09-25 12:06:07
【问题描述】:

我正在尝试生成代码中提到的令牌,但尽管我正在使用它,但它在这一行给了我错误

tokenString, err := token.SignedString(mySigningKey) 因为 key 的类型无效

有解决这个问题的建议吗?

谢谢

package main

import (
    "fmt"
    "github.com/dgrijalva/jwt-go"
    "time"
)

var (
    mySigningKey = []byte("secret")
)

func GenerateJWT() (string, error) {

    token := jwt.New(jwt.SigningMethodES256)

    claims := token.Claims.(jwt.MapClaims)

    claims["authorized"] = true
    claims["user"] = "ravi"
    claims["exp"] = time.Now().Add(time.Minute + 30).Unix()

    tokenString, err := token.SignedString(mySigningKey)

    if err != nil {
        fmt.Println(err)
        fmt.Errorf("Something went wrong : %s", err.Error())
        return "", err

    }
    return tokenString, nil
}

func main() {
    tokenString, err := GenerateJWT()
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(tokenString)
}

【问题讨论】:

  • 我不是专家,但文档明确指定 interface{} 不是 []byte 的密钥。如果你用谷歌搜索你得到的错误,会有很多明显的匹配。培养一些基本的解决问题的技能会让你的生活更轻松。

标签: go jwt jwt-go


【解决方案1】:

此方法(SigningMethodES256)是ECDSA签名方法,您需要对密钥进行签名和验证,您的情况最好改为SigningMethodHS256

    token := jwt.New(jwt.SigningMethodHS256)

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 2019-12-25
    • 2017-12-02
    • 2017-05-25
    • 2023-03-20
    • 1970-01-01
    • 2012-07-17
    • 2018-01-03
    相关资源
    最近更新 更多