[Bug]: Admin user list returns only the first 10 users when no page_size is given

这个报错通常出现在 RAGFlow 管理后台的用户管理页:前端调用 GET /api/v1/admin/users 时未带分页参数,后端默认把 page_size 当作 10,导致账号数超过 10 个时,第 11 个及之后的用户看不到、也搜不到。优先排查后端 ListUsers 对缺省 page_s

快速结论:这个报错通常出现在 RAGFlow 管理后台的用户管理页:前端调用 GET /api/v1/admin/users 时未带分页参数,后端默认把 page_size 当作 10,导致账号数超过 10 个时,第 11 个及之后的用户看不到、也搜不到。优先排查后端 ListUsers 对缺省 page_size 的处理逻辑,以及调用方是否显式传参。

适用环境:Issue 已确认涉及 RAGFlow 的 Go 管理服务(internal/admin/handler.go、internal/admin/user_detail_test.go)与前端 web/src/services/admin-service.ts、web/src/pages/admin/users.tsx;Issue 未提供操作系统、Python、CUDA 或显卡信息。

最快修复方案:使用包含 #21723 的 RAGFlow 版本。该合并修复让 ListUsers 在 page 与 page_size 都未提供时返回全部用户,管理 UI 因此可以看到第 10 个之后的账号。

注意事项:升级到包含 #21723 的版本即可;显式传入 page / page_size 时仍按分页返回一页加 total,这是预期行为。Issue 未给出临时前端绕过或逐行修改建议,自行改动相关代码属于未验证操作。

问题场景

在 RAGFlow 管理后台的“用户管理”页面查看、搜索、排序或分页用户时触发。前端 listUsers 请求不带任何查询参数,返回的数组被直接交给 React Table 做客户端分页、过滤和排序;因此服务端只返回前 10 条时,后续用户在该页面完全不可见,也无法编辑或删除。通过 curl 直接请求 GET /api/v1/admin/users 且不带 page_size 时同样复现。

报错原文

[Bug]: Admin user list returns only the first 10 users when no page_size is given

unpaged list returned 10 users, want 12

原因分析

最可能的原因是 ListUsers 在解析查询参数时调用了 common.ParseRequestIntPositive(c, c.Query("page_size"), "page_size", 10):当调用方未发送 page_size 时,该值被置为 10,随后 UserDAO.List 将其作为 LIMIT 10 使用,而响应的 total 仍是完整用户数。管理 UI 恰好是不传分页参数的调用方,所以只能看到前 10 个账号。Issue 还指出,Go 管理服务之前的 Python UserMgr.get_all_users() 会返回全部用户,说明这是 Go 迁移引入的回归;同一 handler 文件中的 ListAllModels 已将缺省 page_size 视为不限制,ListUsers 与此不一致。

环境排查

  • 确认当前 RAGFlow 版本是否已包含 #21723 的合并修复。
  • 确认后端 ListUsers 在 page 与 page_size 均未提供时的处理逻辑,以及 UserDAO.List 是否仍收到 LIMIT 10。
  • 确认前端 web/src/services/admin-service.ts 中的 listUsers 是否仍不发查询参数。
  • 确认数据库中实际用户数是否大于 10;Issue 未提供操作系统、Python、CUDA、PyTorch、显卡与依赖版本信息,这些项目在此问题中无需排查。

解决步骤

  1. 将 RAGFlow 升级或更新到包含 #21723 的版本,该修复已合并。
  2. 重新部署后,确认 ListUsers 在 page 与 page_size 均未提供时返回全部用户。
  3. 在前端确认 listUsers 仍可不传分页参数调用;请求显式带 page / page_size 时,应继续返回一页数据及 total。
  4. 如需自测,可参照 Issue 中的 TestListUsersWithoutPaginationReturnsEveryUser:准备 12 个用户后发起不带分页参数的列表请求。

验证方法

创建 11 个以上用户后,执行不带 page_size 的 curl -H "Authorization: ..." "$ADMIN/api/v1/admin/users",响应应包含全部用户,而不再只有 10 条且与 total 不一致;对应测试 TestListUsersWithoutPaginationReturnsEveryUser 返回 12 个用户即通过。打开管理后台用户管理页,确认第 10 个之后的账号可见,并能正常搜索、编辑和删除。

参考来源

infiniflow/ragflow #21722

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 33553

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注