package authorize import ( "fmt" "hr_server/grocerystore" "hr_server/models" "hr_server/overall" "hr_server/overall/overallhandle" "strconv" "github.com/gin-gonic/gin" ) //授权 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 { overallhandle.Result(100, err, c) return } if ContentType == "" || userAgent == "" || Origin == "" { overallhandle.Result(100, err, c) return } if requestData.UserNumber == "" || requestData.Password == "" { overallhandle.Result(101, err, c) return } //密码加密 var passwordMd5 overallhandle.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 { overallhandle.Result(2000, userErr, c) return } //获取随机数 randCode := strconv.FormatInt(overallhandle.TableNumber(), 10) //头文件加密 //ContentType var ContentTypeMd5 overallhandle.Md5Encryption if empowerUser.VerificationCode != "" { ContentTypeMd5.AppKey = empowerUser.VerificationCode } ContentTypeMd5.Md5EncryptionInit(ContentType) ContentTypeMd5Str := ContentTypeMd5.Md5EncryptionAlgorithm() //Origin var OriginMd5 overallhandle.Md5Encryption if empowerUser.VerificationCode != "" { OriginMd5.AppKey = empowerUser.VerificationCode } OriginMd5.Md5EncryptionInit(Origin) originMd5Str := OriginMd5.Md5EncryptionAlgorithm() //userAgent var userAgentMd5 overallhandle.Md5Encryption if empowerUser.VerificationCode != "" { userAgentMd5.AppKey = empowerUser.VerificationCode } userAgentMd5.Md5EncryptionInit(userAgent) userAgentMd5Str := userAgentMd5.Md5EncryptionAlgorithm() //随机数加密 var randomNumberMd5 overallhandle.Md5Encryption if empowerUser.VerificationCode != "" { randomNumberMd5.AppKey = empowerUser.VerificationCode } randomNumberMd5.Md5EncryptionInit(randCode) numberMd5 := randomNumberMd5.Md5EncryptionAlgorithm() //用户名加密 var userKeyMd5 overallhandle.Md5Encryption if empowerUser.VerificationCode != "" { userKeyMd5.AppKey = empowerUser.VerificationCode } userKeyMd5.Md5EncryptionInit(requestData.UserNumber) userKeyMd5Str := userKeyMd5.Md5EncryptionAlgorithm() clearCodeToken := fmt.Sprintf("%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str) fmt.Printf("redisKey---->%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str) //token 加密 var tokenMd5 overallhandle.Md5Encryption tokenMd5.Md5EncryptionInit(clearCodeToken) tokenMd5Str := tokenMd5.Md5EncryptionAlgorithm() //设定redis Key名称 redisKey := fmt.Sprintf("Authentication:ApiAuthent_%v", tokenMd5Str) saveTokenRedis := overallhandle.MapOut() 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 overallhandle.Md5Encryption // clearTokenMd5.Md5EncryptionInit(clearTokenStr) // clearTokenMd5Str := clearTokenMd5.Md5EncryptionAlgorithm() var sendToken SendToken sendToken.Number = randCode sendToken.Token = tokenMd5Str overallhandle.Result(0, sendToken, c) }