Browse Source

账号密码登录添加图形验证码

xyxie 1 day ago
parent
commit
ae5c73f228
2 changed files with 29 additions and 1 deletions
  1. 28 1
      controllers/user_login.go
  2. 1 0
      models/business_conf.go

+ 28 - 1
controllers/user_login.go

@@ -260,6 +260,8 @@ func (this *UserLoginController) Login() {
 		VerifyCode  string `description:"验证码"`
 		ReqTime     string `description:"登录时间戳"`
 		TelAreaCode string `description:"区号"`
+		CaptchaId   string `description:"验证码ID"`
+		CaptchaCode string `description:"图形验证码"`
 	}
 	var req UserLoginReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
@@ -290,6 +292,21 @@ func (this *UserLoginController) Login() {
 			return
 		}
 
+		// 获取基本配置信息
+		picVerifyConfInfo, e := models.GetBusinessConfByKey(models.BusinessConfLoginPictureVerifyCode)
+        if e != nil && !utils.IsErrNoRow(e) {
+			br.Msg = "查询配置信息失败"
+			br.ErrMsg = e.Error()
+			return
+		}
+        
+		if picVerifyConfInfo != nil && picVerifyConfInfo.ConfVal == "1" {
+			if req.CaptchaCode == "" || req.CaptchaId == ""{
+				br.Msg = "请输入验证码"
+				return
+			}
+		}
+
 		// 判断账号是否为异常登录, 算作异常的话就需要换另外的方式去登录了
 		abnormalKey := fmt.Sprint(utils.CACHE_ABNORMAL_LOGIN, req.Username)
 		isAbnormal, _ := utils.Rc.RedisString(abnormalKey)
@@ -299,6 +316,16 @@ func (this *UserLoginController) Login() {
 			return
 		}
 
+		// 校验图形验证码
+		if picVerifyConfInfo != nil && picVerifyConfInfo.ConfVal == "1" {
+			store := services.CaptchaRedis{}
+		    ok := store.Verify(req.CaptchaId, req.CaptchaCode, true)
+		    if !ok {
+			   br.Msg = "图形验证码错误, 请重新输入"
+			   return
+		    }
+		}
+
 		// 查询账号信息
 		errPassKey := fmt.Sprint(utils.CACHE_LOGIN_ERR_PASS, req.Username)
 		accountUser, e := system.GetSysUserByAdminName(req.Username)
@@ -1014,7 +1041,7 @@ func (this *UserLoginController) BaseInfo() {
 
 	configKeys := []string{
 		"ICPLicense", "ETATitle", "TabName", "LogoCN", "LogoEN", "LogoCNMini", "LogoENMini", "LoginLeftImg",
-		"ETASubTitleCN", "ETASubTitleEN",
+		"ETASubTitleCN", "ETASubTitleEN","IsLoginPictureVerifyCode",
 	}
 	configOb := new(models.BusinessConf)
 	list, e := configOb.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")

+ 1 - 0
models/business_conf.go

@@ -70,6 +70,7 @@ const (
 	BusinessConfIsOpenChartExpired           = "IsOpenChartExpired"               // 是否开启图表有效期鉴权/报告禁止复制
 	BusinessConfReportChartExpiredTime       = "ReportChartExpiredTime"           // 图表有效期鉴权时间,单位:分钟
 	BusinessConfOssUrlReplace                = "OssUrlReplace"                    // OSS地址替换-兼容内网客户用
+	BusinessConfLoginPictureVerifyCode       = "IsLoginPictureVerifyCode"               // OSS地址替换-兼容内网客户用
 )
 
 const (