diff --git a/core/manage/user_manager.go b/core/manage/user_manager.go index b14f19d..35e3dd2 100644 --- a/core/manage/user_manager.go +++ b/core/manage/user_manager.go @@ -80,7 +80,7 @@ func (wm *ChannelManager) LoginSuccess(UID, name, tp string) error { //判断是否重复登录 for _, v := range wm.User { if v.UserName == name && v.AlarmType == tp && v.LoginState { - return errors.New("repeat login for the same account") + return errors.New("repeat login for the account") } } user, ok := wm.User[UID] diff --git a/core/parse/parse.go b/core/parse/parse.go index 8ae3f0c..5338ee9 100644 --- a/core/parse/parse.go +++ b/core/parse/parse.go @@ -106,9 +106,12 @@ func Decode(data []byte, body *model.Body) error { func Pack(name string, data map[string]string) []byte { var multi []string multi = append(multi, name) - for i, v := range data { - item := fmt.Sprintf("%s=%s", i, v) - multi = append(multi, item) + // 固定值顺序 + keys := []string{"seqNo", "result", "reqId", "resDesc"} + for _, key := range keys { + if v, ok := data[key]; ok { + multi = append(multi, fmt.Sprintf("%s=%s", key, v)) + } } raw := strings.Join(multi, ";") return []byte(raw) diff --git a/core/result.go b/core/result.go index a6ef3fe..84b0734 100644 --- a/core/result.go +++ b/core/result.go @@ -15,8 +15,8 @@ func Result(name string, data map[string]string) []byte { func ResultError(name string, desc, reqID string) []byte { data := map[string]string{ "result": "fail", - "resDesc": desc, "reqId": reqID, + "resDesc": desc, } return Result(name, data) @@ -26,8 +26,8 @@ func ResultError(name string, desc, reqID string) []byte { func ResultSuccess(name string, desc, reqID string) []byte { data := map[string]string{ "result": "succ", - "resDesc": desc, "reqId": reqID, + "resDesc": desc, } return Result(name, data) diff --git a/handle/api/req_cmca_login_alarm.go b/handle/api/req_cmca_login_alarm.go index 58cd9f9..bfbd782 100644 --- a/handle/api/req_cmca_login_alarm.go +++ b/handle/api/req_cmca_login_alarm.go @@ -54,7 +54,7 @@ func (*ReqCMCALoginAlarm) Handle(request ziface.IRequest) { zlog.Ins().ErrorF("LoginFail %s", err) request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ "result": "autherror", - "resDesc": err.Error()[:30], + "resDesc": err.Error(), })) // 已登录的,登录错误超过3次,断开连接 if uid != nil || uid != "" { @@ -73,7 +73,7 @@ func (*ReqCMCALoginAlarm) Handle(request ziface.IRequest) { zlog.Ins().ErrorF("manager:%s", err) request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ "result": "autherror", - "resDesc": err.Error()[:30], + "resDesc": err.Error(), })) return } diff --git a/handle/api/req_login_alarm.go b/handle/api/req_login_alarm.go index 5a1a484..5f74e9c 100644 --- a/handle/api/req_login_alarm.go +++ b/handle/api/req_login_alarm.go @@ -54,7 +54,7 @@ func (s *ReqLoginAlarm) Handle(request ziface.IRequest) { zlog.Ins().ErrorF("LoginFail %s", err) request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ "result": "autherror", - "resDesc": err.Error()[:30], + "resDesc": err.Error(), })) // 已登录的,登录错误超过3次,断开连接 if uid != nil || uid != "" { @@ -73,7 +73,7 @@ func (s *ReqLoginAlarm) Handle(request ziface.IRequest) { zlog.Ins().ErrorF("manager:%s", err) request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ "result": "autherror", - "resDesc": err.Error()[:30], + "resDesc": err.Error(), })) return } diff --git a/handle/service/login.go b/handle/service/login.go index 728eb59..53c0d17 100644 --- a/handle/service/login.go +++ b/handle/service/login.go @@ -17,7 +17,8 @@ func UserLogin(name, passwd string) error { var user model.User err := db.Client.Model(&model.User{}).Where("account_id=?", name).First(&user).Error if err != nil { - return err + zlog.Ins().ErrorF("Password Login[%s]:%s", name, err) + return errors.New("incorrect username and password") } if err := utils.Compare(user.Password, passwd); err != nil { @@ -35,7 +36,8 @@ 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 + zlog.Ins().ErrorF("Password Login[%s]:%s", name, err) + return errors.New("无效用户名") } if user.AccountId != name { @@ -48,13 +50,15 @@ func CMCALogin(name, publicKeyStr, content, signatureBase64 string) error { // 解析公钥 publicKey, err := utils.ParsePKCS1PublicKey(publicKeyPEM) if err != nil { - return fmt.Errorf("解析公钥失败 %s", err) + zlog.Ins().ErrorF("publicKeyPEM Login[%s]:%s", name, err) + return fmt.Errorf("解析公钥失败") } // 解码base64得到签名字节串 signature, err := base64.StdEncoding.DecodeString(signatureBase64) if err != nil { - return fmt.Errorf("解码签名数据失败 %s", err) + zlog.Ins().ErrorF("signatureBase64 Login[%s]:%s", name, err) + return fmt.Errorf("解码签名数据失败") } // 验证签名