在Golang中,使用Gin框架可以快速搭建Web应用程序,并且可以很容易地增加token校验功能。下面是一个基本示例:
- 安装Gin框架
go get -u github.com/gin-gonic/gin
- 创建中间件函数
在这个示例中,我们将创建一个中间件函数来检查HTTP请求头中的Authorization字段是否包含有效的token。如果token无效,则返回401 Unauthorized错误。
func authMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
authHeader := c.GetHeader("Authorization")
if authHeader == "" {
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"message": "Authorization header is missing"})
return
}
token := strings.TrimSpace(strings.TrimPrefix(authHeader, "Bearer"))
if len(token) == 0 {
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"message": "Invalid authorization format"})
return
}
// TODO: Validate the token here
c.Next()
}
}
- 在路由中使用中间件
现在,我们可以在需要进行token验证的路由中使用新创建的authMiddleware函数。例如:
func main() {
r := gin.Default()
// Protected routes
auth := r.Group("/api/v1", authMiddleware())
{
auth.GET("/protected", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "You are authorized!"})
})
}
r.Run(":8080")
}
在上面的示例中,我们使用auth.Group函数来创建一个带有authMiddleware中间件的路由组。在这个路线上,我们定义了一个简单的GET路线,用于测试它是否被授权。
现在我们的Web应用程序可以支持token校验功能了!