Skip to content

[Feature]: 支持删除上游中过期或失效的 API Key #52

Description

@chenyme

Affected area

Model routing / providers

Problem or use case

当前编辑上游配置时,API Key 输入框留空表示“不修改已有 Key”。这个设计本身是安全的,避免管理员打开编辑页后误清空密钥。

但在多 Key 轮询场景下,如果某个 API Key 已经过期、失效或不再使用,目前缺少明确的删除入口。管理员只能重新填写一整组新的 API Key 来覆盖配置,无法直接删除某一个旧 Key,维护成本较高,也容易误操作。

Proposed behavior

在上游编辑页面支持删除已配置的 API Key(仅供参考,以实际用户体验为目标):

  • 编辑上游时展示当前已配置的脱敏 Key 列表。
  • 每个 Key 提供删除操作,点击后标记为待删除。
  • 点击保存后删除对应 Key。
  • 留空输入框仍然保持“不修改已有 Key”的语义,不应改成清空。
  • 不展示明文 API Key,只展示脱敏后的 Key。
  • 如果删除后没有任何可用 Key,应阻止保存并提示需要至少保留一个 Key,或要求管理员先填写新的 Key。
  • 如果填写了新的 API Key,则按现有逻辑替换整组 Key。
  • 删除操作建议二次确认,避免误删可用 Key。

Alternatives considered

可以通过重新填写完整 API Key 列表来覆盖旧配置,但这种方式不适合多 Key 维护场景,也容易遗漏或误删仍可用的 Key。

也可以把空输入框解释为清空所有 Key,但这会破坏当前“留空不修改”的安全语义,不建议这样做。

Compatibility, deployment, or migration impact

配置变更:预计不需要。

API 变更:可能需要扩展上游更新接口,例如支持按索引或 Key ID 删除已配置 Key。

数据库迁移:预计不需要,现有密钥配置已存储为加密 JSON。

部署变更:预计不需要。

向后兼容:现有上游配置保持不变。留空不修改的行为应继续保留。

Documentation or API contract impact

需要补充上游 API Key 管理说明:

  • 留空表示不修改。
  • 填写新 Key 表示替换整组 Key。
  • 删除按钮用于删除已有脱敏 Key。
  • 明文 Key 不会回显。

Pre-submit checklist

  • I searched existing issues and pull requests.
  • This request is focused on one feature or improvement.
  • I described user-facing, API, configuration, or deployment impact where relevant.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions