如何在golang中使用curl发送身份验证令牌?
我正在尝试对我的GolangAPI使用身份验证模型,我正在使用gin框架。我想使用curl发送身份验证令牌,然后验证它,并在身份验证发生后执行所有crud操作 我的代码如下:如何在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 == "" {
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