固定值顺序数据key

This commit is contained in:
TsMask
2023-08-24 10:56:16 +08:00
parent 1902c78572
commit 189122061d
6 changed files with 21 additions and 14 deletions

View File

@@ -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]

View File

@@ -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)

View File

@@ -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)

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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("解码签名数据失败")
}
// 验证签名