diff --git a/worldsrv/action_login.go b/worldsrv/action_login.go index 1b65558..f0a4693 100644 --- a/worldsrv/action_login.go +++ b/worldsrv/action_login.go @@ -74,16 +74,18 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf s.Send(int(login_proto.GatePacketID_PACKET_SS_DICONNECT), ssDis) } - claims, err := webapi.ParseJwtWithClaims([]byte(common.Config.AppId), csl.Token) - if err != nil { - return nil - } - - logger.Logger.Tracef("(this *CSLoginHandler) Process ParseJwtWithClaims: claims:%v", claims.(jwt.MapClaims)) - - username := (claims.(jwt.MapClaims))["Username"].(string) if csl.GetLoginType() == common.LoginTypePlatformToken { - csl.Username = username + claims, err := webapi.ParseJwtWithClaims([]byte(common.Config.AppId), csl.Token) + if err != nil { + return nil + } + + logger.Logger.Tracef("(this *CSLoginHandler) Process ParseJwtWithClaims: claims:%v", claims.(jwt.MapClaims)) + + username := (claims.(jwt.MapClaims))["Username"].(string) + { + csl.Username = username + } } if (csl.GetUsername() == "" || csl.GetPassword() == "") && csl.GetLoginType() != common.LoginTypePlatformToken { @@ -214,17 +216,17 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf } // 玩家是否有在登录的连接 - if LoginStateMgrSington.IsLogining(username, csl.GetPlatform(), tagkey) { + if LoginStateMgrSington.IsLogining(csl.GetUsername(), csl.GetPlatform(), tagkey) { logger.Logger.Warnf("CSLoginHandler logining (%v) disconnect current(%v) ", csl.GetUsername(), sid) sendSCDisconnect(common.KickReason_Logining) // 登录中重复登录会被断开连接 return nil } // 玩家已经登录完成并且在游戏中,断开当前连接 - ls := LoginStateMgrSington.GetLoginStateByName(UserKey(username, csl.GetPlatform(), tagkey)) + ls := LoginStateMgrSington.GetLoginStateByName(UserKey(csl.GetUsername(), csl.GetPlatform(), tagkey)) if ls != nil && ls.acc != nil { // lss 其它连接 - lss := LoginStateMgrSington.LoginFinish(username, csl.GetPlatform(), sid, ls.acc, tagkey) + lss := LoginStateMgrSington.LoginFinish(csl.GetUsername(), csl.GetPlatform(), sid, ls.acc, tagkey) player := PlayerMgrSington.GetPlayerBySnId(ls.acc.SnId) waitMatch := false if player != nil { @@ -243,7 +245,7 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf ResVer: csl.GetResVer(), InviterId: csl.GetInviterId(), PromoterTree: csl.GetPromoterTree(), - UserName: username, + UserName: csl.GetUsername(), PlatformTag: csl.GetPlatformTag(), Promoter: csl.GetPromoter(), Sid: sid, @@ -252,7 +254,7 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf } // 玩家开始登录 - if LoginStateMgrSington.StartLogin(username, csl.GetPlatform(), sid, s, clog, tagkey) { + if LoginStateMgrSington.StartLogin(csl.GetUsername(), csl.GetPlatform(), sid, s, clog, tagkey) { tl := &TaskLogin{CSLogin: csl, Session: s, Sid: sid, BackupPromoter: backupPromoter, tagkey: tagkey, codeValid: codeValid} t := task.New(nil, tl, tl, "TaskLogin") if b := t.StartByExecutor(csl.GetUsername()); !b { @@ -264,7 +266,7 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf // 用缓存信息做登录,有account // 根据StartLogin代码,这里ls.acc一定不为nil - ls = LoginStateMgrSington.GetLoginStateByName(UserKey(username, csl.GetPlatform(), tagkey)) + ls = LoginStateMgrSington.GetLoginStateByName(UserKey(csl.GetUsername(), csl.GetPlatform(), tagkey)) if ls != nil { acc := ls.acc // 账号冻结 @@ -279,7 +281,7 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf pwdIsErr := true switch csl.GetLoginType() { case common.LoginTypeGuest: //游客登录 - if acc.UserName == username && acc.Platform == csl.GetPlatform() && acc.TagKey == tagkey { + if acc.UserName == csl.GetUsername() && acc.Platform == csl.GetPlatform() && acc.TagKey == tagkey { raw := fmt.Sprintf("%v%v%v", acc.PassWord, common.GetAppId(), csl.GetTimeStamp()) h := md5.New() io.WriteString(h, raw) @@ -291,7 +293,7 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf } } case common.LoginTypeAccount: //帐号登录 - if acc.UserName == username && acc.Platform == csl.GetPlatform() && acc.TagKey == tagkey { + if acc.UserName == csl.GetUsername() && acc.Platform == csl.GetPlatform() && acc.TagKey == tagkey { // 用户密码 userPwd := common.GetRawPassword(acc.TelPassWord, csl.GetTimeStamp()) if userPwd != csl.GetPassword() { @@ -307,7 +309,7 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf } } case common.LoginTypeTelCode: // 手机验证码登录 - if acc.Tel == username && acc.Platform == csl.GetPlatform() && acc.TagKey == tagkey { + if acc.Tel == csl.GetUsername() && acc.Platform == csl.GetPlatform() && acc.TagKey == tagkey { if codeValid { // 更新密码 raw := fmt.Sprintf("%v%v", bson.NewObjectId().Hex(), common.GetAppId()) @@ -374,7 +376,7 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf SCLogin(s, sid, csl, acc, login_proto.OpResultCode_OPRC_Sucess, false) // 标记当前玩家登录成功,断开其它连接 - lss := LoginStateMgrSington.LoginFinish(username, csl.GetPlatform(), sid, acc, tagkey) + lss := LoginStateMgrSington.LoginFinish(csl.GetUsername(), csl.GetPlatform(), sid, acc, tagkey) if len(lss) != 0 { for k, ls := range lss { ssDis := &login_proto.SSDisconnect{ diff --git a/worldsrv/task_login.go b/worldsrv/task_login.go index 0d6a8d4..6b96d83 100644 --- a/worldsrv/task_login.go +++ b/worldsrv/task_login.go @@ -41,19 +41,23 @@ type TaskLogin struct { func (t *TaskLogin) Call(o *basic.Object) interface{} { var playerData *model.PlayerData - //token验证 - claims, err := webapi.ParseJwtWithClaims([]byte(common.Config.AppId), t.Token) - if err != nil { - return nil + if t.GetLoginType() == common.LoginTypePlatformToken { + //token验证 + claims, err := webapi.ParseJwtWithClaims([]byte(common.Config.AppId), t.Token) + if err != nil { + return nil + } + + logger.Logger.Tracef("TaskLogin ParseJwtWithClaims: claims:%v", claims.(jwt.MapClaims)) + + username := (claims.(jwt.MapClaims))["Username"].(string) + t.Username = username } - logger.Logger.Tracef("TaskLogin ParseJwtWithClaims: claims:%v", claims.(jwt.MapClaims)) - - username := (claims.(jwt.MapClaims))["Username"].(string) //expire := (claims.(jwt.MapClaims))["Exp"] //timeStamp := (claims.(jwt.MapClaims))["Timestamp"] - acc, retCode := model.AccountIsExist(username, username, t.GetPassword(), t.GetPlatform(), + acc, retCode := model.AccountIsExist(t.GetUsername(), t.GetUsername(), t.GetPassword(), t.GetPlatform(), t.GetTimeStamp(), common.LoginTypePlatformToken, t.tagkey, false, t.codeValid) switch retCode {