name5566 / leaf

A game server framework in Go (golang)
Apache License 2.0
5.3k stars 1.32k forks source link

请问所以消息都从Gate转发,我怎么知道自己在Login服验证通过,登录成功了? #105

Closed jjjjilyf closed 6 years ago

jjjjilyf commented 6 years ago

谢谢回答。不会是从客户端限制吧?登录成功了,就能进入游戏了?但是服务器也需要验证的吧?

cdcailf commented 6 years ago

https://github.com/name5566/leaf/issues/41 我就是参考这个做的,通过session去识别。登录后生成唯一session。每次请求带着session。进行统一管理。

jjjjilyf commented 6 years ago

好的 我看看 O(∩_∩)O谢谢

karllynnn commented 6 years ago

登陆成功后你在agentUserInfo里面存用户信息,然后每个请求处理之前验证一下不就行了…

jjjjilyf commented 6 years ago

@Karllynnn所有的玩家都放在一个Map里面,map[string]*User,我通过客户端传来的string发现map里有这个string类型key,这样就代表是当前玩家无疑了吗?关键是我只有这个string key可用作验证吧?而这个string key我用来从map里查找user,查找到就算有了啊,但是能说这就是本人登录么?

karllynnn commented 6 years ago

@jjjjilyf client建立连接以后,agent就相当于一个session了,默认UserInfo里面是nil啊,client认证成功在里面放入相关信息不就完了。验证用户请求的时候,如果agent.UserInfo == nil,就是没认证,否则就是认证了。如果你想记录所有在线用户,可以设一个map[string]Agent,key是用户id,这样就能反向查找一个用户的agent了…

jjjjilyf commented 6 years ago

@karllynnn好的 多谢指点