[!NOTE] 中间件为过滤进入应用程序的 HTTP 请求提供了一种方便的机制

  • 项目内置了logger,recovery,404,checkLogin,rbac等中间件
  • 所有中间件目前都位于app/middleware目录下

定义中间件

  • app/middleware下新建文件
  • package定义为middleware
func Casbin_rbac() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Abort()//阻断
        c.Next()//继续执行
    }
}

为路由设置中间件

  • 定义好中间件后到路由文件使用Use方法
  • 例如routes/admin.go

中间件参数

  • 我们可以拿到gin.Context的参数
func Logger() gin.HandlerFunc {
    return func(c *gin.Context) {
        t := time.Now()
        // 设置 example 变量
        c.Set("example", "12345")
        // 请求前
        c.Next()
        // 请求后
        latency := time.Since(t)
        log.Print(latency)
        // 获取发送的 status
        status := c.Writer.Status()
        log.Println(status)
    }
}

中间件的执行流程

func Logger() gin.HandlerFunc {
    return func(c *gin.Context) {
        log.Println("请求前")
        c.Next()
        // 请求后
        log.Println("请求后")
    }
}
powered by Gitbook该文件最后修改时间: 2021-10-31 17:29:21

results matching ""

    No results matching ""