package auth import ( "github.com/gin-gonic/gin" "net/http" "regexp" "strings" "webserver/extend/config" "webserver/extend/logger" ) const ( TokenKey = "abc123456789" ) type Auth interface { Check(c *gin.Context)bool User(c *gin.Context)interface{} Login(http *http.Request,w http.ResponseWriter,user map[string]interface{})interface{} Logout(http *http.Request,w http.ResponseWriter) bool } func GenerateAuthDriver() *Auth { var authDriver Auth authDriver = NewJwtAuthDriver() return &authDriver } func AuthHandler() gin.HandlerFunc { return func(c *gin.Context) { urlPath := c.Request.URL.Path if strings.Contains(urlPath,"/data/api-v") && !strings.Contains(urlPath,"login"){ //jwtDriver :=NewJwtAuthDriver() //if !jwtDriver.Check(c) { // util.ResponseFormat(c,code.TokenNotFound,"尚未登录,请登录") // c.Abort() //} c.Next() } else if strings.Contains(urlPath,"/httpImage") { host := c.Request.URL.Host logger.Debug("host:", host) imgUrl := config.Server.ImageUrl domain := config.Server.PublicDomain domainReg := regexp.MustCompile(``+domain+``) if domainReg.MatchString(host) {//域名访问 imgUrl = domain } urlPath = strings.Replace(urlPath, "/httpImage", "", -1) idx := strings.Index(urlPath, ":") tmpPath := urlPath if idx >-1 {//路径中包含有端口,取端口以后路径 tmpPath = urlPath[idx:] imgIndx := strings.LastIndex(imgUrl, ":") if imgIndx > -1 { imgUrl = imgUrl[:imgIndx] } } logger.Debug("imgUrl+tmpPath:", imgUrl+tmpPath) c.Header("Access-Control-Allow-Origin","*") c.Redirect(http.StatusMovedPermanently, imgUrl+tmpPath) return } else { c.Next() } } } func GetCurUser(c *gin.Context)map[string]interface{}{ return (*GenerateAuthDriver()).User(c).(map[string]interface{}) }