a.yml
aalist:
- "a"
- "b"
- "c"
- "d"
- "e"
- "f"
- "g"
- "h"
- "i"
- "j"
使用gin框架的中间件做身份验证
package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
// 以下略去自己写的包
)
func loginHandler() gin.HandlerFunc {
return func(context *gin.Context) {
config := config.GetConfig()
// 域名验证
if context.Request.Host != "abc.net" {
context.JSON(http.StatusForbidden, gin.H{"message": "Path Forbidden"})
context.Abort()
}
// 头部验证
if context.Request.Header.Get("abcd") != config.FileID {
context.JSON(http.StatusUnauthorized, gin.H{"message": "身份验证失败"})
context.Abort()
}
// 客户地址是否在白名单
if _, ok := config.CheckIPWhiteMap[context.Request.RemoteAddr]; !ok {
context.JSON(http.StatusForbidden, gin.H{"message": "IP not in whitelist"})
context.Abort()
}
context.Next()
}
}
// Install .
func Install(r gin.IRouter) {
r.GET("/ping/", ping)
filesGroup := r.Group("aa")
filesGroup.Use(loginHandler())
filesGroup.Static("/", "/bb/cc/dd")
}
身份验证 参考:https://blog.csdn.net/fwhezfwhez/article/details/79258385