简介 目录 评价 推荐
  • 程序小工 2021-08-29
    package main
    
    import (
       "fmt"
       "github.com/gin-gonic/gin"
       "net/http"
    )
    
    func IPAuthMiddleware() gin.HandlerFunc {
       return func(c *gin.Context) {
          ipList := []string{
             "127.0.0.2",
          }
          flag := false
          clientIP := c.ClientIP()
          for _, ip := range ipList {
             if ip == clientIP {
                flag = true
                break
             }
          }
          if !flag {
             c.String(http.StatusUnauthorized, "%s not in ip list", clientIP)
             c.Abort()
          }
       }
    }
    func main()  {
    
       r := gin.Default()
       r.Use(IPAuthMiddleware())
       
       r.GET("whitelist_middleware_gin", func(c *gin.Context) {
          c.String(200, c.ClientIP())
       })
       
       err := r.Run()
       if err != nil {
          fmt.Println(err)
       }
    }

    1、ip数组初始化:

    ipList := []string{
        "127.0.0.2",
    }


    2、获取客户端ip

    c.ClientIP()


    3、自定义中间件:

    3.1 定义中间件方法
    func IPAuthMiddleware() gin.HandlerFunc {
       return func(c *gin.Context) {
         
       }
    }
    
    3.2 使用中间件
    r.Use(IPAuthMiddleware())


    4、中间件校验不通过直接退出

    c.Abort() // 不终止退出的话,会继续调用接口,输出接口内容,与中间件检验拦截目的不符
    0赞 · 0采集
数据加载中...
开始学习 免费