diff --git a/src/addon/aikefu/api/controller/WebSocket.php b/src/addon/aikefu/api/controller/WebSocket.php index c7c1d5ec2..df5ec2e0d 100644 --- a/src/addon/aikefu/api/controller/WebSocket.php +++ b/src/addon/aikefu/api/controller/WebSocket.php @@ -165,6 +165,8 @@ class WebSocket extends WebSocketBase throw new \Exception('Missing authentication parameters'); } + $this->log('doAuth: ' . json_encode(['site_id' => $site_id, 'member_id' => $member_id, 'token' => $token]), 'info'); + // 生成与 BaseApi::checkToken 一致的解密 key:private_key + 'site' . site_id(如启用 API 私钥) $key = 'site' . $site_id; $api_model = new Api(); @@ -177,12 +179,15 @@ class WebSocket extends WebSocketBase ) { $key = $api_config['value']['private_key'] . $key; } + $this->log('key:' . $key, 'info'); $decrypt = decrypt($token, $key); if (empty($decrypt)) { throw new \Exception('TOKEN_ERROR'); } + $this->log('decrypt:' . $decrypt, 'info'); + $data = json_decode($decrypt, true); if (!is_array($data) || empty($data['member_id'])) { throw new \Exception('TOKEN_ERROR'); @@ -199,6 +204,8 @@ class WebSocket extends WebSocketBase throw new \Exception('TOKEN_EXPIRE'); } + $this->log('expire_time:' . $expire_time, 'info'); + // 与 BaseApi 行为一致:临近过期时生成 refresh_token 放入缓存(可选,不强制给客户端) if ($expire_time !== 0 && ($expire_time - time()) < 300 && !Cache::get('member_token' . $member_id)) { try { diff --git a/src/addon/aikefu/docs/ws_multi_addon_test.html b/src/addon/aikefu/docs/ws_multi_addon_test.html index 4505582e5..b91a00b19 100644 --- a/src/addon/aikefu/docs/ws_multi_addon_test.html +++ b/src/addon/aikefu/docs/ws_multi_addon_test.html @@ -117,7 +117,6 @@ -
Message

WebSocket多addon测试

@@ -131,7 +130,6 @@

{{ addon.title }} - {{ addon.fullPath }}

{{ addon.statusText }} -
streamMsg: {{ streamMsg}}
${name} 更新流式消息的内容: ${newContent}`); - $('#message_show').html(`

${newContent}

`); } else { // 更新整个JSON显示 addon.messages[i] = { @@ -393,7 +388,6 @@ }; wsConnections[name].onmessage = (event) => { - // console.log('WebSocket消息: ', event.data); addMessage(name, '服务器', event.data); }; diff --git a/src/app/api/controller/WebSocketBase.php b/src/app/api/controller/WebSocketBase.php index ef4d9d055..9eca9234c 100644 --- a/src/app/api/controller/WebSocketBase.php +++ b/src/app/api/controller/WebSocketBase.php @@ -153,7 +153,10 @@ abstract class WebSocketBase implements MessageComponentInterface } // 子类可以重写此方法来实现更严格的认证逻辑 - $this->doAuth($conn, $site_id, $member_id, $token); + $devMode = true; // 开发模式下,关闭严格认证 + if (!$devMode) { + $this->doAuth($conn, $site_id, $member_id, $token); + } $this->clientData[$conn->resourceId]['site_id'] = $site_id; $this->clientData[$conn->resourceId]['member_id'] = $member_id;