我是新来的。我正在尝试使用 go 和 jwt 设置一个安全的网络服务器,但我无法编译它:
mw := jwtmiddleware.New(jwtmiddleware.Options{
ValidationKeyGetter: func (token *jwt.Token) (interface{}, error) {
return mySigningKey, nil
},
SigningMethod: jwt.SigningMethodHS256,
})
但我只收到以下错误(来自编译器和分析器):
cannot use func literal (type func(*"webserver/vendor/github.com/dgrijalva/jwt-go".Token) (interface {}, error)) as type "github.com/dgrijalva/jwt-go".Keyfunc in field value
我曾尝试将其设为单独的命名函数,但这没有帮助。 jwt库显示
type Keyfunc func(*Token) (interface{}, error)
因此,它应该与签名匹配。包括 auth0.com
在内的几个在线示例中的代码是相同的。
我已经成功地运行了更简单的 go 程序,包括提供一个简单的网页,所以编译器工作正常。
在 ubuntu 18.04 上运行最新稳定版本的 go 和软件包(几天前下载并安装)。谢谢
最佳答案
似乎该软件包不在 vendor/github.com 中。我做了以下事情:
cp -R ../github.com/auth0 vendor/github.com/auth0
现在可以编译了。
关于go jwt ValidationKeyGetter 不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52685908/