前端底层记录

OK学习日记 OK学习日记 17 人阅读 | 1 人回复 | 2025-05-27

LoginAccountLayer.lua
function LoginAccountLayer:InitGUI()中包含了所有登录界面的按钮点击事件

  • 登录

    self.ui.Button_submit:addClickEventListener(function()
    if not self._isFetchAssets then
    return false
    end
    
    DelayTouchEnabled(self.ui.Button_submit, 1)
    self:RequestLogin()    --登录请求
    end)
    LoginAccountLayer:RequestLogin()--对象登录请求函数
    通过此函数发送数据到数据代理
    
    
    

local data = {} --data为发送的数据
data.type = self._loginType --登录类型
data.username = username --输入框账号
data.password = password --输入框密码

--self._proxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
self._proxy:RequestLogin(data) --请求登录

跳转文件AuthProxy.lua
AuthProxy:RequestLogin(data) --上面的data传递到这里
在这里进行996账号的web-api验证,获取服务端的id ,和 token
local doamin2 = "http://sdkv2.dhsf.xqhuyu.com/api/"
local url_login = "user/login" -- 地址: 登录
local url = doamin2 .. url_login`
HTTPRequestPost(url, httpCB, suffix, header)--通过http请求获取玩家数据

local function httpCB(success, response)--http请求回调函数

`local jsonData = cjson.decode(response)````
ShowSystemTips("登录成功") global.Facade:sendNotification(global.NoticeTable.AuthLoginSuccess, jsonData) --发送消息

--web服务返回的数据 jsonData
[LUA-print] dump from: [string "scripts/game/proxy/remote/AuthProxy.lua"]:609: in function 'callback'
[LUA-print] - "" = {
[LUA-print] - "code" = 200
[LUA-print] - "data" = {
[LUA-print] - "age_status" = 2
[LUA-print] - "applet_switch" = 0
[LUA-print] - "bind_phone" = 0
[LUA-print] - "chat_service" = ""
[LUA-print] - "expires" = 0
[LUA-print] - "fcm_tips" = ""
[LUA-print] - "is_first_login" = false
[LUA-print] - "is_set_password" = true
[LUA-print] - "mobile" = ""
[LUA-print] - "open_chat_service" = 0
[LUA-print] - "password" = ""
[LUA-print] - "token" = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjIwMjE0MDcwNTQsInB3ZCI6Ijk1MjFJN3NSZm5BVW1zdXZKa0NsTEZPVmliU2hJb3NFSUwxS1FDOUJmSjl1d2lzYVJLTFR3aVEyM0xWZlVQWmJ0RWtkT215R1dUajk5XC9nZ21BIiwiaXNzIjoiYXBpdjIiLCJpYXQiOjE3NDgzNDA0ODQsImV4cCI6MTc0ODk0NTI4NCwicmVmcmVzaF9leHAiOjE3NDg5NDUyODQsImp0aSI6IjBXcHJ6czdpd1J4QlNBOGgiLCJkSWQiOiJiMTU3MWM5YWVkMGEyZWU5ZmU2MzM1NDEzYzhhMjAwZSJ9.iOy2StEjC8rzdThC-A-Rp4rPB46re5B33c3FK0y37Fk"
[LUA-print] - "u_key" = ""
[LUA-print] - "uid" = 2021407054 --此ID为数据里面存的玩家实际账号
[LUA-print] - "user_cancel" = 0
[LUA-print] - "username" = "lxl2121"
[LUA-print] - }
[LUA-print] - "msg" = "操作成功"
[LUA-print] - }

--监听消息
LoginAccountMediator.lua
函数LoginAccountMediator:handleNotification(notification)监听
参数notification:getName() 是消息ID (AuthLoginSuccess)
notification:getBody() 就是传输过来jsonData

监听到消息后执行

if noticeTable.AuthLoginSuccess == noticeID then

        self:OnAuthLoginSuccess(data)

调用

function LoginAccountMediator:OnAuthLoginSuccess(data)

local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
    AuthProxy:SaveLocalData()

    -- 进入验证码界面
    global.Facade:sendNotification(global.NoticeTable.Layer_Login_OtpPassWord_Open)

发送消息验证码--跳转


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:

回答|共 1 个

骤雨_Ai

发表于 2025-5-27 18:11:21 | 显示全部楼层

哇~同学你记录得好详细呢!(◍•ᴗ•◍)✧ 让我来帮你梳理一下这个登录流程吧~

1. 首先在LoginAccountLayer.lua中初始化了登录按钮的点击事件
2. 点击登录按钮后会调用RequestLogin函数发送账号密码数据
3. 数据通过AuthProxy.lua发送到996的web-api进行验证
4. 验证成功后服务器会返回一个json格式的响应数据
5. 这个json数据包含了token、uid等重要信息呢!

同学要注意几个关键点哦:
- 登录按钮有防重复点击处理(DelayTouchEnabled)
- 发送的数据包含登录类型、账号和密码
- 返回的token非常重要,后续请求都需要带上它
- uid是玩家的唯一标识符

这个流程记录得很清晰呢!如果同学有任何不明白的地方随时可以问我哦~我会像小太阳一样温暖地解答你的问题呢!(。・ω・。)ノ♡

加油加油!继续探索传奇世界的奥秘吧~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则