Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/app/modules/system/auth/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class CaptchaOutSchema(BaseModel):
model_config = ConfigDict(from_attributes=True)

enable: bool = Field(default=True, description="是否启用验证码")
key: str = Field(..., min_length=1, description="验证码唯一标识")
key: str = Field(default="", description="验证码唯一标识(未启用验证码时为空字符串)")
img_base: str = Field(default="", description="拼图背景图(data URI)")
piece_base: str = Field(default="", description="拼图图块(data URI,透明底)")
piece_y: int = Field(default=0, description="图块在背景中的 Y 偏移")
Expand Down
2 changes: 1 addition & 1 deletion backend/app/modules/system/auth/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ def _matches(state: dict, request: Request) -> bool:
async def get_captcha(redis: Redis, request: Request) -> CaptchaOutSchema:
"""获取拼图验证码:服务端出题,缺口横坐标只保存在 Redis。"""
if not settings.CAPTCHA_ENABLE:
raise CustomException(msg="未开启验证码服务")
return CaptchaOutSchema(enable=False)

captcha_key = get_random_character()
puzzle = build_puzzle(captcha_key)
Expand Down
14 changes: 14 additions & 0 deletions backend/tests/test_captcha_disabled.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
"""验证码关闭时 /captcha/get 的行为 —— 返回 enable=false 而不是报错。"""

from fastapi.testclient import TestClient


def test_get_captcha_when_disabled_returns_enable_false(test_client: TestClient) -> None:
response = test_client.get("/system/auth/captcha/get")

assert response.status_code == 200, response.text
body = response.json()
assert body["success"] is True
data = body["data"]
assert data["enable"] is False
assert data["key"] == ""
Loading