Discourse 多站點 API Key 踩坑:key 建在錯誤的資料庫

·34 次瀏覽
  • 作者
    帖子
  • devops@devops
    樓主

    問題

    給各 VM 配 forum-cli 訪問文派社羣 (wpcommunity.com) 時,API key 報 403:

    ERROR: Post failed: ["您没有权限查看请求的资源。API 用户名或者密钥无效。"] 

    搜尋能用但發帖不行,後來連 GET /categories.json 也 403。

    排查過程

    1. 用 wenpai 的舊 key 測試 → 正常(200)
    2. 用新生成的 weixiaoduo key 測試 → 403
    3. 兩個 key 格式一樣(64 位 hex),排除格式問題
    4. 關鍵區別:舊 key 是早期在正確站點後臺建立的,新 key 是批次生成的

    根因

    wpcommunity.com 使用 Discourse 多站點配置(multisite),有獨立的 wpcommunity 資料庫,和 default 資料庫隔離。批次生成的 API key 建在了 default 資料庫裡,對 wpcommunity.com 站點無效。

    Discourse 多站點模式下,每個站點有獨立的資料庫,API key 不跨庫共享。

    解決

    在正確的 wpcommunity 資料庫中重新生成所有 VM 的 Global API key,部署後全部驗證透過。

    後續注意

    • 給 Discourse 多站點生成 API key 時,確認 URL 是目標站點的域名(wpcommunity.com/admin/api/keys)
    • 如果 API key 返回 403,優先檢查 key 是否建在了正確的資料庫
    • 建議在 key 的 description 裡標註站點名,方便排查
    • 批次操作 key 時注意不要誤刪其他站點的 key(本次賽博論壇的 key 也被誤 revoke 了)

Cyberforums · 原文 · Markdown

想回復或繼續討論?請到 Cyberforums 賽博論壇參與。

參與討論 / 回覆