固定值顺序数据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 { for _, v := range wm.User {
if v.UserName == name && v.AlarmType == tp && v.LoginState { 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] 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 { func Pack(name string, data map[string]string) []byte {
var multi []string var multi []string
multi = append(multi, name) multi = append(multi, name)
for i, v := range data { // 固定值顺序
item := fmt.Sprintf("%s=%s", i, v) keys := []string{"seqNo", "result", "reqId", "resDesc"}
multi = append(multi, item) for _, key := range keys {
if v, ok := data[key]; ok {
multi = append(multi, fmt.Sprintf("%s=%s", key, v))
}
} }
raw := strings.Join(multi, ";") raw := strings.Join(multi, ";")
return []byte(raw) 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 { func ResultError(name string, desc, reqID string) []byte {
data := map[string]string{ data := map[string]string{
"result": "fail", "result": "fail",
"resDesc": desc,
"reqId": reqID, "reqId": reqID,
"resDesc": desc,
} }
return Result(name, data) return Result(name, data)
@@ -26,8 +26,8 @@ func ResultError(name string, desc, reqID string) []byte {
func ResultSuccess(name string, desc, reqID string) []byte { func ResultSuccess(name string, desc, reqID string) []byte {
data := map[string]string{ data := map[string]string{
"result": "succ", "result": "succ",
"resDesc": desc,
"reqId": reqID, "reqId": reqID,
"resDesc": desc,
} }
return Result(name, data) return Result(name, data)

View File

@@ -54,7 +54,7 @@ func (*ReqCMCALoginAlarm) Handle(request ziface.IRequest) {
zlog.Ins().ErrorF("LoginFail %s", err) zlog.Ins().ErrorF("LoginFail %s", err)
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{
"result": "autherror", "result": "autherror",
"resDesc": err.Error()[:30], "resDesc": err.Error(),
})) }))
// 已登录的登录错误超过3次,断开连接 // 已登录的登录错误超过3次,断开连接
if uid != nil || uid != "" { if uid != nil || uid != "" {
@@ -73,7 +73,7 @@ func (*ReqCMCALoginAlarm) Handle(request ziface.IRequest) {
zlog.Ins().ErrorF("manager:%s", err) zlog.Ins().ErrorF("manager:%s", err)
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{
"result": "autherror", "result": "autherror",
"resDesc": err.Error()[:30], "resDesc": err.Error(),
})) }))
return return
} }

View File

@@ -54,7 +54,7 @@ func (s *ReqLoginAlarm) Handle(request ziface.IRequest) {
zlog.Ins().ErrorF("LoginFail %s", err) zlog.Ins().ErrorF("LoginFail %s", err)
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{
"result": "autherror", "result": "autherror",
"resDesc": err.Error()[:30], "resDesc": err.Error(),
})) }))
// 已登录的登录错误超过3次,断开连接 // 已登录的登录错误超过3次,断开连接
if uid != nil || uid != "" { if uid != nil || uid != "" {
@@ -73,7 +73,7 @@ func (s *ReqLoginAlarm) Handle(request ziface.IRequest) {
zlog.Ins().ErrorF("manager:%s", err) zlog.Ins().ErrorF("manager:%s", err)
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{ request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{
"result": "autherror", "result": "autherror",
"resDesc": err.Error()[:30], "resDesc": err.Error(),
})) }))
return return
} }

View File

@@ -17,7 +17,8 @@ func UserLogin(name, passwd string) error {
var user model.User var user model.User
err := db.Client.Model(&model.User{}).Where("account_id=?", name).First(&user).Error err := db.Client.Model(&model.User{}).Where("account_id=?", name).First(&user).Error
if err != nil { 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 { 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 var user model.User
err := db.Client.Model(&model.User{}).Where("account_id=?", name).First(&user).Error err := db.Client.Model(&model.User{}).Where("account_id=?", name).First(&user).Error
if err != nil { if err != nil {
return err zlog.Ins().ErrorF("Password Login[%s]:%s", name, err)
return errors.New("无效用户名")
} }
if user.AccountId != name { if user.AccountId != name {
@@ -48,13 +50,15 @@ func CMCALogin(name, publicKeyStr, content, signatureBase64 string) error {
// 解析公钥 // 解析公钥
publicKey, err := utils.ParsePKCS1PublicKey(publicKeyPEM) publicKey, err := utils.ParsePKCS1PublicKey(publicKeyPEM)
if err != nil { if err != nil {
return fmt.Errorf("解析公钥失败 %s", err) zlog.Ins().ErrorF("publicKeyPEM Login[%s]:%s", name, err)
return fmt.Errorf("解析公钥失败")
} }
// 解码base64得到签名字节串 // 解码base64得到签名字节串
signature, err := base64.StdEncoding.DecodeString(signatureBase64) signature, err := base64.StdEncoding.DecodeString(signatureBase64)
if err != nil { if err != nil {
return fmt.Errorf("解码签名数据失败 %s", err) zlog.Ins().ErrorF("signatureBase64 Login[%s]:%s", name, err)
return fmt.Errorf("解码签名数据失败")
} }
// 验证签名 // 验证签名