From 94de3a27bb667f9338e7978424c292cb55f0bf96 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 18 Jan 2023 01:51:14 +0800 Subject: [PATCH] add dynamic access token support --- src/ZM/Framework.php | 2 +- src/ZM/Plugin/OneBot12Adapter.php | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ZM/Framework.php b/src/ZM/Framework.php index f9131d33..1110a7ee 100644 --- a/src/ZM/Framework.php +++ b/src/ZM/Framework.php @@ -46,7 +46,7 @@ class Framework public const VERSION_ID = 674; /** @var string 版本名称 */ - public const VERSION = '3.0.0-beta6'; + public const VERSION = '3.0.0-beta7'; /** @var array 传入的参数 */ protected array $argv; diff --git a/src/ZM/Plugin/OneBot12Adapter.php b/src/ZM/Plugin/OneBot12Adapter.php index 4da88d17..c8eee800 100644 --- a/src/ZM/Plugin/OneBot12Adapter.php +++ b/src/ZM/Plugin/OneBot12Adapter.php @@ -286,7 +286,13 @@ class OneBot12Adapter extends ZMPlugin $token = $request->getQueryParams()['access_token'] ?? ''; } $token = explode('Bearer ', $token); - if (!isset($token[1]) || $token[1] !== $stored_token) { // 没有 token,鉴权失败 + // 动态和静态鉴权 + if ($stored_token instanceof \Closure) { + $stored_token = $stored_token($token[1] ?? null); + } else { + $stored_token = !isset($token[1]) || $token[1] !== $stored_token; + } + if (!$stored_token) { // 没有 token,鉴权失败 logger()->warning('OneBot 12 反向 WS 连接鉴权失败,拒绝接入'); $event->withResponse(HttpFactory::createResponse(401, 'Unauthorized')); $event->stopPropagation();