如何在 go-swagger 中使用代码 401 或 404 而不是 500 响应无效的承载令牌

How to respond with code 401 or 404 instead of 500 in go-swagger for invalid bearer token

我使用 go-swagger 创建了一个 REST API 服务器,并为一些端点添加了不记名令牌安全性。根据文档,令牌验证方法应具有类似 func(string) (interface{}, error).

的签名

令牌验证方法returns如果传递的不记名令牌无效则出错。这导致对请求者的 500 个响应 JSON 响应正文:

{
    "code": 500,
    "message": "Token is expired"
}

但是,作为standers,我该如何使用代码401进行响应。

注意:Java类似的讨论可以在找到,有什么办法可以实现吗?

我没有使用 go-swagger 的经验,只是偶然发现了这个问题。 答案在示例中: https://github.com/go-swagger/go-swagger/tree/master/examples/authentication

例子表明函数returns an:

errors.New(401, "incorrect api key auth")

这是包中的错误:“github.com/go-openapi/errors”,您可以在其中传递 http 状态代码。