package auth import ( "github.com/gin-gonic/gin" "net/http" "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") { domain := config.Server.PublicDomain //domainReg := regexp.MustCompile(``+domain+``) //if domainReg.MatchString(host) {//域名访问 // imgUrl = domain //} urlPath = strings.Replace(urlPath, "/httpImage", "", -1) if strings.Contains(urlPath,domain) { urlPath = strings.Replace(urlPath,"/"+domain,"",-1) } logger.Debug("urlPath:",urlPath) idx := strings.LastIndex(urlPath, ":") tmpPath := "" if idx >-1 {//路径中包含有端口,取端口以后路径 tmpPath = urlPath[idx:] } else { tmpPath = ":6080"+tmpPath } c.Header("Access-Control-Allow-Origin","*") logger.Debug("domain+tmpPath:",domain+tmpPath) c.Redirect(http.StatusMovedPermanently, domain+tmpPath) return } else { c.Next() } } } func GetCurUser(c *gin.Context)map[string]interface{}{ return (*GenerateAuthDriver()).User(c).(map[string]interface{}) }