Skip to content

[BUG] @fu18.cn 邮箱无法注册 - 租户 SSO 域模糊匹配返回多条记录 #475

@Clawiee

Description

@Clawiee

🐛 Bug 描述

注册时报错 "服务正在启动或遇到问题",即使服务正常运行也无法注册。

🔍 根本原因

数据库中存在两个租户的 sso_domain 都包含 fu18.cn

当用户使用 @fu18.cn 邮箱注册时,代码执行模糊匹配 Tenant.sso_domain.ilike("%fu18.cn%"),返回了两条记录,导致 SQLAlchemy 的 scalar_one_or_none() 方法抛出 MultipleResultsFound 异常。

📊 受影响范围

所有 @fu18.cn 结尾的邮箱都无法完成注册。

🔧 修复建议

  1. 在租户创建时增加 sso_domain 唯一性校验,防止重复
  2. 或者在查询时使用 scalar_many() + 取第一条,而非 scalar_one_or_none()
  3. 考虑改用精确匹配 Tenant.sso_domain == email_domain 或前缀匹配,减少误匹配概率

📝 其他信息

  • 问题发现时间:2026-04-26
  • 发现人:xiaoan

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions