refactor(login): 修改登录服务相关功能

- 修改端口配置:将 .vscode/launch.json 中的端口从 27777 改为 27000
- 优化会话管理:更新 session 包中的 GetSession 和 SaveSession 函数,使用新的 sessionprx 变量
- 调整登录逻辑:修改 login 控制器中的 Login 函数,优化会话验证流程
- 扩展服务器信息结构:在 CommendSvrInfo 结构中添加好友和黑名单信息字段
- 修复 GetSessionId 函数:改进错误处理,确保返回值的一致性
- 更新服务器配置:修改 ServerR.xml 中的 EmailLogin URL 为本地地址
- 其他 minor changes:删除了一些不必要的注释和打印语句
This commit is contained in:
2025-07-05 22:32:44 +08:00
parent 7f71bb9b6b
commit 86c38fbc84
10 changed files with 38 additions and 21 deletions

2
.vscode/launch.json vendored
View File

@@ -19,7 +19,7 @@
"request": "launch",
"mode": "auto",
"cwd": "${workspaceFolder}",
"args": ["-port=27777"],
"args": ["-port=27000"],
"program": "${workspaceFolder}/logic"
}

View File

@@ -3,13 +3,14 @@ package session
import (
"blazing/cool"
"context"
"fmt"
"strings"
"time"
"github.com/gogf/gf/v2/os/gctx"
)
var session = "blazing:session:"
var sessionprx = "blazing:session:"
// GetSession 通过给定的键从缓存中获取会话数据。
// 该函数主要执行以下操作:
@@ -24,18 +25,18 @@ func GetSession(t1 string) (userid uint32, err error) {
// 从缓存中获取与键 t2 关联的数据。这里假设 cool.CacheManager 已经初始化,并且 Get 方法可用。
// 此处不处理 err可能是因为上层调用者期望处理这个错误或者在特定上下文中错误被视为可接受。
t, err := cool.CacheManager.Get(context.Background(), session+t2)
t, err := cool.CacheManager.Get(context.Background(), sessionprx+t2)
userid = t.Uint32()
return
}
func SaveSession(session string, userid string) error {
err := cool.CacheManager.Set(gctx.New(), session+strings.Trim(session, " "), userid, time.Hour*24)
err := cool.CacheManager.Set(gctx.New(), sessionprx+strings.Trim(session, " "), userid, time.Hour*24)
// gsvc.SetRegistry(etcd.New(`127.0.0.1:2379`))
//t, err := cool.CacheManager.Contains(context.Background(), strings.Trim(session, " "))
// //fmt.Println("前端获取", session, t, err)
fmt.Println("前端获取", session, err)
// if t {
// return nil
// }

View File

@@ -13,7 +13,7 @@ import (
// 处理命令: 1001
func (h Controller) Login(data login.LoginSidInfo, c gnet.Conn) []byte { //这个时候player应该是空的
fmt.Println(data.CheakSession()) //检查结构体
//fmt.Println(data.CheakSession()) //检查结构体
if tt := data.CheakSession(); tt { //说明sid正确

View File

@@ -7,7 +7,10 @@ type CommendSvrInfo struct {
IsVip uint32 // 建议为0
ServerInfoLen uint32 `struc:"sizeof=ServerList"` // 服务器信息长度 ServerInfo
ServerList []ServerInfo // 服务器具体信息
Reversed uint32 // 保留字段
FriendInfoLen uint32 `struc:"sizeof=FriendInfo"`
FriendInfo []FriendInfo // 好友id
BlackInfoLen uint32 `struc:"sizeof=BlackInfo"`
BlackInfo []BlackInfo // 黑名单id
}
func NewCommendSvrInfo() *CommendSvrInfo {
@@ -17,7 +20,9 @@ func NewCommendSvrInfo() *CommendSvrInfo {
IsVip: 0,
ServerInfoLen: 0,
ServerList: make([]ServerInfo, 0),
Reversed: 0,
FriendInfo: make([]FriendInfo, 0),
BlackInfo: make([]BlackInfo, 0),
//Reversed: 0,
}
}
@@ -39,3 +44,13 @@ type ServerInfo struct {
func NewServerInfo() *ServerInfo {
return &ServerInfo{}
}
type FriendInfo struct {
BlackInfo
TimePoke uint32
}
type BlackInfo struct {
Userid uint32
//TimePoke uint32
}

View File

@@ -22,10 +22,10 @@ func (l *LoginSidInfo) CheakSession() bool {
t1 := hex.EncodeToString(l.Sid)
t, err := session.GetSession(t1)
fmt.Println("后端获取", string(l.Sid), t, err)
if t == l.Head.UserID {
return true
if err != nil {
return false
}
fmt.Println("后端获取", t1, t, err)
return false
return t == l.Head.UserID
}

View File

@@ -1,9 +1,6 @@
package main
import (
"encoding/hex"
"fmt"
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
"github.com/panjf2000/gnet/v2"
@@ -59,7 +56,7 @@ func recv(c gnet.Conn, data handler.TomeeHeader) {
ret.ServerList = append(ret.ServerList, *lofin)
tt := core.Pack(data, ret)
fmt.Println(hex.EncodeToString(tt))
//fmt.Println(hex.EncodeToString(tt))
c.Write(tt)
}

View File

@@ -62,7 +62,11 @@ func (c *BlazingController) GetSession(ctx context.Context, req *SessionReq) (re
res.Code = 400
res.Msg = err.Error()
}
if res1 == nil {
res.Code = 400
res.Msg = err.Error()
return
}
accountID := res1.ID
retsid, sid, err := biazing_service.GetSessionId(accountID)
if err != nil {

View File

@@ -41,12 +41,12 @@ func (s *LoginService) GetSessionId(accountID uint) (string, string, error) {
binary.BigEndian.PutUint32(buf2, uint32(accountID))
//fmt.Printf("小端序: %v (十六进制: %x)\n", buf2, buf2) // 输出: [252 255 255 255] (0xFCFFFFFF)
ttid, _ := hex.DecodeString(tt)
//fmt.Println(bytes, "随机字节")
ret := append(bytes, hex.EncodeToString([]byte(tt))...)
ret := append(buf2, ttid...)
ret = append(ret, bytes...)
return string(ret), tt, nil
return hex.EncodeToString(ret), tt, nil
// /t1.
// 以上过程只需全局一次且应在生成ID之前完成。
}

View File

@@ -9,7 +9,7 @@
<ipConfig>
<http url="/ip.txt"/>
<!--http url="http://login.51seer.com/ip.txt"/-->
<EmailLogin url="http://14.103.145.161:8080/"/>
<EmailLogin url="http://127.0.0.1:8080/"/>
<Email ip="10.1.1.4" port="7777"/>
<DirSer ip="10.1.1.4" port="7777"/>
<Visitor ip="10.1.1.4" port="7777"/>

Binary file not shown.