diff --git a/handle/api/req_cmca_login_alarm.go b/handle/api/req_cmca_login_alarm.go index a81a2e7..bfbd782 100644 --- a/handle/api/req_cmca_login_alarm.go +++ b/handle/api/req_cmca_login_alarm.go @@ -50,7 +50,7 @@ func (*ReqCMCALoginAlarm) Handle(request ziface.IRequest) { seqNo := m.GetUserByPID(uid.(string)).SeqNo content := username + ":" + seqNo // 检查判断是否对应随机码 - if err := service.CMCALogin(cert, content, key); err != nil { + if err := service.CMCALogin(username, cert, content, key); err != nil { zlog.Ins().ErrorF("LoginFail %s", err) request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ "result": "autherror", diff --git a/handle/service/login.go b/handle/service/login.go index 189976e..728eb59 100644 --- a/handle/service/login.go +++ b/handle/service/login.go @@ -30,20 +30,31 @@ func UserLogin(name, passwd string) error { // CMCALogin 验证随机码 // content "user:seqNo" 组合的字符 // signatureBase64 签名数据(base64编码) -func CMCALogin(publicKeyStr, content, signatureBase64 string) error { +func CMCALogin(name, publicKeyStr, content, signatureBase64 string) error { + // 用户名密码校验 + var user model.User + err := db.Client.Model(&model.User{}).Where("account_id=?", name).First(&user).Error + if err != nil { + return err + } + + if user.AccountId != name { + return fmt.Errorf("用户名错误 %s", name) + } + // 公钥 publicKeyPEM := fmt.Sprintf("-----BEGIN RSA PUBLIC KEY-----\n %s \n-----END RSA PUBLIC KEY-----", publicKeyStr) // 解析公钥 publicKey, err := utils.ParsePKCS1PublicKey(publicKeyPEM) if err != nil { - fmt.Println("解析公钥失败:", err) + return fmt.Errorf("解析公钥失败 %s", err) } // 解码base64得到签名字节串 signature, err := base64.StdEncoding.DecodeString(signatureBase64) if err != nil { - fmt.Println("解码签名数据失败:", err) + return fmt.Errorf("解码签名数据失败 %s", err) } // 验证签名