package authorize import ( "fmt" "key_performance_indicators/overall" "strconv" "github.com/gin-gonic/gin" "key_performance_indicators/middleware/grocerystore" "key_performance_indicators/models" "key_performance_indicators/overall/publicmethod" ) //授权 func (e *EmpowerApi) GainToken(c *gin.Context) { ContentType := c.Request.Header.Get("Content-Type") Origin := c.Request.Header.Get("Origin") userAgent := c.Request.Header.Get("User-Agent") var requestData gainAuthorize err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if ContentType == "" || userAgent == "" || Origin == "" { publicmethod.Result(100, err, c) return } if requestData.UserNumber == "" || requestData.Password == "" { publicmethod.Result(101, err, c) return } //密码加密 var passwordMd5 publicmethod.Md5Encryption passwordMd5.Md5EncryptionInit(requestData.Password) passwordMd5Str := passwordMd5.Md5EncryptionAlgorithm() var empowerUser models.EmpowerUser userErr := empowerUser.GetCont(map[string]interface{}{"userkey": requestData.UserNumber, "password": passwordMd5Str}, "verification_code") if userErr != nil { publicmethod.Result(2000, passwordMd5Str, c) return } //获取随机数 randCode := strconv.FormatInt(publicmethod.TableNumber(), 10) // randCode := strconv.FormatInt(16557925694780, 10) //头文件加密 //ContentType var ContentTypeMd5 publicmethod.Md5Encryption ContentTypeMd5.Md5EncryptionInit(ContentType) if empowerUser.VerificationCode != "" { ContentTypeMd5.AppKey = empowerUser.VerificationCode } fmt.Printf("ContentTypeMd5Str ----->%v\n", ContentTypeMd5) ContentTypeMd5Str := ContentTypeMd5.Md5EncryptionAlgorithm() //Origin var OriginMd5 publicmethod.Md5Encryption OriginMd5.Md5EncryptionInit(Origin) if empowerUser.VerificationCode != "" { OriginMd5.AppKey = empowerUser.VerificationCode } originMd5Str := OriginMd5.Md5EncryptionAlgorithm() //userAgent var userAgentMd5 publicmethod.Md5Encryption userAgentMd5.Md5EncryptionInit(userAgent) if empowerUser.VerificationCode != "" { userAgentMd5.AppKey = empowerUser.VerificationCode } userAgentMd5Str := userAgentMd5.Md5EncryptionAlgorithm() //随机数加密 var randomNumberMd5 publicmethod.Md5Encryption randomNumberMd5.Md5EncryptionInit(randCode) if empowerUser.VerificationCode != "" { randomNumberMd5.AppKey = empowerUser.VerificationCode } numberMd5 := randomNumberMd5.Md5EncryptionAlgorithm() //用户名加密 var userKeyMd5 publicmethod.Md5Encryption userKeyMd5.Md5EncryptionInit(requestData.UserNumber) if empowerUser.VerificationCode != "" { userKeyMd5.AppKey = empowerUser.VerificationCode } userKeyMd5Str := userKeyMd5.Md5EncryptionAlgorithm() clearCodeToken := fmt.Sprintf("%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str) fmt.Printf("redisKey---->ContentTypeMd5Str:%v-originMd5Str:%v-userAgentMd5Str:%v-numberMd5:%v-userKeyMd5Str:%v-passwordMd5Str:%v\n", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str) //token 加密 var tokenMd5 publicmethod.Md5Encryption tokenMd5.Md5EncryptionInit(clearCodeToken) if empowerUser.VerificationCode != "" { tokenMd5.AppKey = empowerUser.VerificationCode } fmt.Printf("tokenMd5Appk ----->%v\n", tokenMd5) tokenMd5Str := tokenMd5.Md5EncryptionAlgorithm() //设定redis Key名称 redisKey := fmt.Sprintf("Authentication:ApiAuthent_%v", tokenMd5Str) saveTokenRedis := publicmethod.MapOut[string]() saveTokenRedis["number"] = randCode saveTokenRedis["userkey"] = requestData.UserNumber saveTokenRedis["password"] = requestData.Password //将验证信息写入Redis redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS3) redisClient.SetRedisTime(10800) redisClient.HashMsetAdd(redisKey, saveTokenRedis) //输出验证 // clearTokenStr := fmt.Sprintf("%v-%v", tokenMd5Str, numberMd5) // var clearTokenMd5 publicmethod.Md5Encryption // clearTokenMd5.Md5EncryptionInit(clearTokenStr) // clearTokenMd5Str := clearTokenMd5.Md5EncryptionAlgorithm() var sendToken SendToken sendToken.Number = randCode sendToken.Token = tokenMd5Str publicmethod.Result(0, sendToken, c) } //加密验证 func (e *EmpowerApi) Encryption(c *gin.Context) { var requestData EncryptionData err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } var ContentTypeMd5 publicmethod.Md5Encryption ContentTypeMd5.Md5EncryptionInit(requestData.Number) ContentTypeMd5.AppKey = requestData.AppKey ContentTypeMd5Str, dfg := ContentTypeMd5.Md5EncryptionAlgorithmFj() outputCont := publicmethod.MapOut[string]() outputCont["index"] = "MD5加密验证" // outputCont["userErr"] = userErr outputCont["md5"] = ContentTypeMd5Str outputCont["number"] = requestData.Number outputCont["appkey"] = requestData.AppKey outputCont["step"] = dfg publicmethod.Result(0, outputCont, c) }