什么是平台网站,网站 运营工作如何做,深圳设计网站速成班,深圳网站建设公司联系系列目录 《gin框架使用系列之一——快速启动和url分组》《gin框架使用系列之二——uri占位符和占位符变量的获取》《gin框架使用系列之三——获取表单数据》《gin框架使用系列之四——json和protobuf的渲染》《gin框架使用系列之五——表单校验》
一、gin中间件概述 gin中将…系列目录 《gin框架使用系列之一——快速启动和url分组》《gin框架使用系列之二——uri占位符和占位符变量的获取》《gin框架使用系列之三——获取表单数据》《gin框架使用系列之四——json和protobuf的渲染》《gin框架使用系列之五——表单校验》
一、gin中间件概述 gin中将很多需要拓展的功能都归纳到中间件中比如说上篇我们用到的国际化的转换器就是一个中间件。在大多数情况下中间件可以理解为一个拦截器gin中将中间件组成一个链在调用的过程中依次执行中间件就可以实现拦截的目的。 gin中的中间件实现其实很简单其实就是一个func(*Context)的函数类型并在使用的时候在router.use()中注入即可。尤其是因为有routeGroup功能gin还可以支持给不同的group添加不同的中间件 在中间件中调用c.Next()方法可以让直行链继续调用c.Abort()方法阻断链的继续执行 注意在gin的中间件中直接return不能阻断链条的执行必须调用c.Abort()方法才行
二、自定义token校验中间件示例
我们自定一个token校验的中间件来掩饰中间件的使用方法 自定义中间件的核心代码如下
func checkToken(c *gin.Context) {var token string// 找到token数据for key, value : range c.Request.Header {if strings.ToLower(key) x-token {token value[0]}}// 校验tokenif token ! hong {c.JSON(http.StatusBadRequest, gin.H{msg: token错误,})c.Abort()}c.Next()
}
整体示例代码如下
package mainimport (github.com/gin-gonic/ginnet/httpstrings
)func checkToken(c *gin.Context) {var token string// 找到token数据for key, value : range c.Request.Header {if strings.ToLower(key) x-token {token value[0]}}// 校验tokenif token ! hong {c.JSON(http.StatusBadRequest, gin.H{msg: token错误,})c.Abort()}c.Next()
}func main() {router : gin.Default()// 添加token校验的中间件router.Use(checkToken)router.GET(/ping, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{message: pong,})})router.Run() // listen and serve on 0.0.0.0:8080
}
运行程序添加错误token的访问结果 添加正确token的访问结果
后记 个人总结欢迎转载、评论、批评指正