如何在golang中使用curl发送身份验证令牌?

如何在golang中使用curl发送身份验证令牌?,curl,go,Curl,Go,我正在尝试对我的GolangAPI使用身份验证模型,我正在使用gin框架。我想使用curl发送身份验证令牌,然后验证它,并在身份验证发生后执行所有crud操作 我的代码如下: func TokenAuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { token := c.Request.FormValue("token") if token == "" {

我正在尝试对我的GolangAPI使用身份验证模型,我正在使用gin框架。我想使用curl发送身份验证令牌,然后验证它,并在身份验证发生后执行所有crud操作

我的代码如下:

func TokenAuthMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        token := c.Request.FormValue("token")

        if token == "" {
            respondWithError(401, "API token required", c)
            return
        }

        if token != os.Getenv("API_TOKEN") {
            respondWithError(401, "Invalid API token", c)
            return
        }

        c.Next()
    }
}

func respondWithError(code int, message string,c *gin.Context) {
    resp := map[string]string{"error": message}

    c.JSON(code, resp)
    c.Abort()
}
主要功能:

func main() {
    router := gin.Default()
    router.Use(TokenAuthMiddleware())
    router.Run(":8000")
}
如何使用curl传递身份验证令牌?

c.Request.FormValue(“令牌”)
希望令牌通过
应用程序/x-www-form-urlencoded
POST请求发送。要使用cURL实现这一点,可以执行以下操作:

$ curl -i --data "token=<token>" https://example.org/endpoint
签名身份验证令牌的正确方法是使用。我建议使用JWT

如果只需要一个用户访问API,那么就不需要JWT了。只需确保您的身份验证令牌是(伪)随机生成的,例如使用
openssl
库:

$ openssl rand -out $GOPATH/bin/token.key -base64 128

如果将其作为表单数据发送,则需要使用curl的
--data
标志(阅读使用手册)。在
授权
头中接受令牌可能更有意义https://example.org/endpoint但我得到了{“错误”:“无效的API令牌”}我的错误-不要使用选项-X。您确定API_令牌与
os.Getenv
中定义的匹配吗?如果不匹配,请验证为什么
os.GetEnv
不匹配。否则,请尝试通过标头发送,并使用gin进行处理,如下所示:
var token=c.Request.header.Get(“Authorization”)
thanx,但我得到的结果相同如果您有其他建议,请告诉我您是否尝试通过
Authorization
标头传递令牌?并在Go代码中适当地处理它?
$ openssl rand -out $GOPATH/bin/token.key -base64 128