github-actions[bot]
Update from GitHub Actions
6e73b5d
import { HTTPError } from 'h3';
/**
* 认证中间件 - 验证 API 密钥
*/
export const authMiddleware = (event) => {
// 跳过健康检查的认证
if (event.path === '/health') {
return;
}
// 只对 API 路由进行认证
if (!event.path?.startsWith('/v1/')) {
return;
}
// 尝试多种方式获取 authorization 头
const authorization = event.headers?.authorization ||
event.req?.headers?.authorization ||
event.node?.req?.headers?.authorization;
if (!authorization) {
throw new HTTPError(401, 'Authorization header is required');
}
// 支持 Bearer token 格式
const token = authorization.startsWith('Bearer ')
? authorization.slice(7)
: authorization;
if (!token) {
throw new HTTPError(401, 'Invalid authorization format');
}
// 验证 token(这里可以根据需要实现更复杂的验证逻辑)
if (!isValidApiKey(token)) {
throw new HTTPError(401, 'Invalid API key');
}
// 将 API 密钥添加到事件上下文中
event.context.apiKey = token;
};
/**
* 验证 API 密钥
*/
function isValidApiKey(apiKey) {
// 简单验证:检查是否为非空字符串
// 在实际应用中,你可能需要:
// 1. 检查数据库中的有效密钥
// 2. 验证密钥格式
// 3. 检查密钥权限
return typeof apiKey === 'string' && apiKey.length > 0;
}