休闲登录兼容账号密码登录
This commit is contained in:
parent
7aaf7e510a
commit
a28e6b4fcf
|
@ -74,6 +74,7 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf
|
|||
s.Send(int(login_proto.GatePacketID_PACKET_SS_DICONNECT), ssDis)
|
||||
}
|
||||
|
||||
if csl.GetLoginType() == common.LoginTypePlatformToken {
|
||||
claims, err := webapi.ParseJwtWithClaims([]byte(common.Config.AppId), csl.Token)
|
||||
if err != nil {
|
||||
return nil
|
||||
|
@ -82,9 +83,10 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf
|
|||
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
|
||||
}
|
||||
}
|
||||
|
||||
if (csl.GetUsername() == "" || csl.GetPassword() == "") && csl.GetLoginType() != common.LoginTypePlatformToken {
|
||||
sendSCLogin(login_proto.OpResultCode_OPRC_Error)
|
||||
|
@ -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{
|
||||
|
|
|
@ -41,6 +41,7 @@ type TaskLogin struct {
|
|||
func (t *TaskLogin) Call(o *basic.Object) interface{} {
|
||||
var playerData *model.PlayerData
|
||||
|
||||
if t.GetLoginType() == common.LoginTypePlatformToken {
|
||||
//token验证
|
||||
claims, err := webapi.ParseJwtWithClaims([]byte(common.Config.AppId), t.Token)
|
||||
if err != nil {
|
||||
|
@ -50,10 +51,13 @@ func (t *TaskLogin) Call(o *basic.Object) interface{} {
|
|||
logger.Logger.Tracef("TaskLogin ParseJwtWithClaims: claims:%v", claims.(jwt.MapClaims))
|
||||
|
||||
username := (claims.(jwt.MapClaims))["Username"].(string)
|
||||
t.Username = username
|
||||
}
|
||||
|
||||
//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 {
|
||||
|
|
Loading…
Reference in New Issue