package controllers import ( "fmt" "hongze/hongze_mobile_admin/models/custom" "hongze/hongze_mobile_admin/models/tables/h5_admin_session" services "hongze/hongze_mobile_admin/service" "hongze/hongze_mobile_admin/utils" "net/url" "strconv" "strings" ) //需要授权token的基类 type BaseAuth struct { BaseCommon AdminWx *custom.AdminWx `description:"管理员信息"` Token string `description:"用户token"` Session *h5_admin_session.H5AdminSession `description:"用户session"` } func (this *BaseAuth) Prepare() { var requestBody string method := this.Ctx.Input.Method() if method == "GET" { requestBody = this.Ctx.Request.RequestURI } else { requestBody, _ = url.QueryUnescape(string(this.Ctx.Input.RequestBody)) } fmt.Println("requestBody:", requestBody) ip := this.Ctx.Input.IP() fmt.Println("ip:", ip) apiLog.Println("请求地址:", this.Ctx.Input.URI(), "RequestBody:", requestBody, "IP:", ip) authorization := this.Ctx.Input.Header("Authorization") //if authorization == "" { // cookie := this.Ctx.GetCookie("rddp_access_token") // utils.FileLog.Info("authorization:%s,cookie:%s", authorization, cookie) // authorization = cookie //} uri := this.Ctx.Input.URI() utils.FileLog.Info("URI:%s", uri) if strings.Contains(uri, "/api/wechat/login") { authorization = "" } if authorization != "" { session, err := h5_admin_session.GetSessionByToken(authorization) if err != nil { if err.Error() == utils.ErrNoRow() { this.TokenMsgError("信息已变更,请重新登陆!", "Token 信息已变更:Token: "+authorization) return } this.TokenMsgError("网络异常,请稍后重试!", "获取用户信息异常,Err:"+err.Error()) return } if session == nil { this.TokenMsgError("网络异常,请稍后重试!", "session is empty") return } this.Session = session var adminWx *custom.AdminWx if session.AdminId > 0 { tmpAdminWx, tmpErr := services.GetAdminUserItemByAdminId(session.AdminId, utils.WxPlatform) adminWx = tmpAdminWx err = tmpErr } else if session.OpenId != "" { tmpAdminWx, tmpErr := services.GetAdminUserItemByOpenId(session.OpenId) adminWx = tmpAdminWx err = tmpErr } else { this.TokenMsgError("数据异常!", "session is empty") return } //wxUser, err := models.GetWxUserItemByUserId(session.UserId) //wxUser, err := services.GetWxUserItemByOpenId(session.OpenId) if err != nil { //没有找到记录 if err.Error() == utils.ErrNoRow() { this.TokenMsgError("信息已变更,请重新登陆!", "获取admin 信息失败 "+strconv.Itoa(session.AdminId)) return } //如果不是登录绑定接口,同时报错信息不是用户未绑定的情况下,那么就返回异常 if !strings.Contains(uri, "/api/admin/login") && err != services.ERR_ADMIN_NOT_BIND { this.TokenMsgError("网络异常,请稍后重试!", "获取admin_wx信息异常,Err:"+err.Error()) return } } if adminWx == nil { this.TokenMsgError("网络异常,请稍后重试!", "admin is empty") return } this.AdminWx = adminWx } this.Token = authorization }