PHP转Go系列 | ThinkPHP与Gin框架之OpenApi授权设计实践
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
// 假设这是从配置中读取的API秘钥
var apiKey = "your_api_key"
func main() {
router := gin.Default()
// 假设这是从配置中读取的API秘钥
router.GET("/ping", func(c *gin.Context) {
c.String(http.StatusOK, "pong")
})
// 用户需要在HTTP请求中携带API秘钥
router.GET("/protected", func(c *gin.Context) {
// 从HTTP请求中获取API秘钥
key := c.Query("key")
// 验证API秘钥
if key != apiKey {
c.JSON(http.StatusUnauthorized, gin.H{"message": "Unauthorized"})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Authorized access granted"})
})
router.Run(":8080")
}
这段代码展示了如何在Gin框架中设计一个简单的API秘钥授权机制。它创建了一个简单的API,其中/ping
端点不需要授权,而/protected
端点需要一个API秘钥才能访问。代码中使用了Gin的查询参数获取方法来获取请求中携带的API秘钥,并与预定义的秘钥进行比对。如果秘钥不匹配,则返回未授权的响应。这是一个典型的API授权实践,可以被用作ThinkPHP迁移到Gin框架过程中的一个参考。
评论已关闭