krinlove commited on
Commit
971ee24
·
verified ·
1 Parent(s): 25875f9

Update verify.js

Browse files
Files changed (1) hide show
  1. verify.js +24 -19
verify.js CHANGED
@@ -1,44 +1,49 @@
1
- // verify.js (带有详细日志的版本)
2
-
3
- const manager = require('../lib/manager');
4
 
5
  const verify = async (req, res, next) => {
6
- // ... (之前的 API key 验证逻辑) ...
 
 
 
 
 
 
7
 
8
- if (apiKey === expectedToken) {
9
- console.log('[AUTH_MIDDLEWARE] API key verification successful.');
 
 
 
 
 
 
10
  try {
11
- console.log('[AUTH_MIDDLEWARE] Attempting to get account...');
12
  req.account = await manager.getAccount();
13
  if (!req.account) {
14
- console.warn('[AUTH_MIDDLEWARE] Account not found after successful API key verification.');
15
  return res.status(503).json({
16
  error: {
17
- message: '服务暂时不可用,无法获取有效账户 (Service temporarily unavailable, cannot retrieve a valid account)',
18
  type: 'service_unavailable',
19
  code: 'account_unavailable'
20
  }
21
  });
22
  }
23
- // 修改这一行,避免 stringify 整个可能包含循环引用的对象
24
- if (req.account.email) { // 假设 email 是一个你想记录的安全属性
25
- console.log(`[AUTH_MIDDLEWARE] Account retrieved successfully. User Email: ${req.account.email}`);
26
- } else {
27
- console.log(`[AUTH_MIDDLEWARE] Account object retrieved successfully (details not logged to avoid circular structure error).`);
28
- }
29
  next();
30
  } catch (error) {
31
- console.error('[AUTH_MIDDLEWARE] Error while getting account (could be during retrieval or logging):', error); // 错误可能发生在这里或之前的 stringify
 
32
  return res.status(503).json({
33
  error: {
34
- message: '服务暂时不可用 (Service temporarily unavailable)',
35
  type: 'service_unavailable',
36
- code: 'internal_error_account_retrieval_or_logging' // 更精确的错误码
37
  }
38
  });
39
  }
40
  } else {
41
- // ... (无效 API key 的逻辑) ...
42
  }
43
  };
44
 
 
1
+ const manager = require('../lib/manager'); // 假设路径相对于此文件是正确的
 
 
2
 
3
  const verify = async (req, res, next) => {
4
+ // 1. x-api-key 请求头获取值
5
+ const apiKeyHeader = req.headers['x-api-key'];
6
+
7
+ // 2. 检查请求头是否存在
8
+ if (!apiKeyHeader) {
9
+ return res.status(401).json({ message: 'Unauthorized' }); // 保持原始错误消息
10
+ }
11
 
12
+ // 3. 准备用于比较的 token,如果存在 "Bearer " 前缀(不区分大小写),则移除
13
+ let tokenToCompare = apiKeyHeader;
14
+ if (apiKeyHeader.toLowerCase().startsWith('bearer ')) {
15
+ tokenToCompare = apiKeyHeader.substring(7); // "Bearer " 长度为 7
16
+ }
17
+
18
+ // 4. 与环境变量中的 AUTH_TOKEN 进行比较
19
+ if (tokenToCompare === process.env.AUTH_TOKEN) {
20
  try {
 
21
  req.account = await manager.getAccount();
22
  if (!req.account) {
23
+ // 保持原始错误结构
24
  return res.status(503).json({
25
  error: {
26
+ message: '服务暂时不可用,无法获取有效账户',
27
  type: 'service_unavailable',
28
  code: 'account_unavailable'
29
  }
30
  });
31
  }
32
+ // console.log(`身份校验成功,使用账号=> ${JSON.stringify(req.account)}`); // 保持原始注释掉的日志
 
 
 
 
 
33
  next();
34
  } catch (error) {
35
+ console.error('获取账户时出错:', error); // 保持原始的 console.error
36
+ // 保持原始错误结构
37
  return res.status(503).json({
38
  error: {
39
+ message: '服务暂时不可用',
40
  type: 'service_unavailable',
41
+ code: 'internal_error'
42
  }
43
  });
44
  }
45
  } else {
46
+ return res.status(401).json({ message: 'Unauthorized' }); // 保持原始错误消息
47
  }
48
  };
49