固定值顺序数据key
This commit is contained in:
@@ -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]
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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("解码签名数据失败")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证签名
|
// 验证签名
|
||||||
|
|||||||
Reference in New Issue
Block a user