波波技术栈
article

ComfyUI-Login 安装与鉴权教程

本文介绍了 ComfyUI-Login 插件的安装与鉴权配置方法。针对公网暴露的 ComfyUI 实例,通过安装该插件可设置密码登录,并为脚本和 HTTP API 提供 Token 鉴权。文章详细说明了 git clone 与 ZIP 两种安装方式、首次登录设置、API Token 的三种获取途径(启动日志、PASSWORD 文件、浏览器 Cookie),以及 API 调用时的鉴权方式与 curl 自测示例。

面向 已安装好 ComfyUI 环境 的机器。ComfyUI 默认无登录,公网暴露时任何人可访问。安装 ComfyUI-Login 后可设密码,并为脚本 / HTTP API 提供 Token 鉴权。

下文路径相对于 ComfyUI 根目录(记为 ComfyUI/),请换成你的实际路径。

项目 路径 / 说明
登录插件 ComfyUI/custom_nodes/ComfyUI-Login/
密码与 token 存储 ComfyUI/login/PASSWORD(首行常为 API token)
登录页 http://<主机>:<端口>/login
工作流主页 http://<主机>:<端口>/(需先登录)

0. 为什么要装

场景 不装 Login 装 Login 后
云 GPU 公网 IP 谁都能打开 ComfyUI、排队生图 需账号密码才能进网页
脚本 / 客户端调 API 无法鉴权或只能裸奔 tokenCookiePOST /prompt
多人共用一台机 难区分、难回收权限 统一密码 + 固定 token

API 对接请优先用 Token(启动后写入 login/PASSWORD 或日志里 token=$2b$...)。浏览器 Cookie 适合临时手工 curl,易过期,不适合长期保存在脚本里。


1. 安装 ComfyUI-Login

插件必须在 ComfyUI/custom_nodes/ComfyUI-Login,不要 clone 到 ComfyUI 根目录。

1.1 git clone(推荐)

cd ComfyUI/custom_nodes
git clone https://github.com/liusida/ComfyUI-Login.git
cd ComfyUI-Login
pip3 install -r requirements.txt

GitHub 较慢可用镜像:

cd ComfyUI/custom_nodes
git clone https://ghproxy.net/https://github.com/liusida/ComfyUI-Login.git ComfyUI-Login
cd ComfyUI-Login && pip3 install -r requirements.txt

1.2 安装失败时:ZIP 方式

cd ComfyUI/custom_nodes
wget -O ComfyUI-Login.zip https://ghproxy.net/https://github.com/liusida/ComfyUI-Login/archive/refs/heads/main.zip
unzip ComfyUI-Login.zip
mv ComfyUI-Login-main ComfyUI-Login
rm -f ComfyUI-Login.zip
cd ComfyUI-Login && pip3 install -r requirements.txt

1.3 安装后必做

完整重启 ComfyUI(结束旧进程再启动)。仅刷新浏览器不会加载插件。

cd ComfyUI
python3 main.py --listen 0.0.0.0 --port 8188

本机调试可将 0.0.0.0 改为 127.0.0.1。远程访问需防火墙 / 安全组放行对应 TCP 端口


2. 首次登录(网页)

  1. 浏览器打开:http://<主机IP或域名>:<端口>/login 例:http://127.0.0.1:8188/loginhttp://139.x.x.x:6889/login
  2. 首次访问无默认账号,按页面提示 自行设置用户名和密码
  3. 登录成功后跳转到 ComfyUI 主界面,可正常 Load 工作流、Queue Prompt。
  4. 未登录直接访问 / 会被重定向到 /login

忘记密码

rm -f ComfyUI/login/PASSWORD

然后 重启 ComfyUI,再打开 /login 重新设置用户名和密码(会生成新的 token)。


3. 获取 API Token(给脚本 / API 调用)

Token 形如 $2b$12$...(bcrypt 相关字符串),与浏览器 Cookie 里 gAAAA... 不是同一种东西。

3.1 方法一:看启动日志(常用)

重启 ComfyUI 后,在 SSH 终端 或日志文件中查找:

For direct API calls, use token=$2b$12$xxxxxxxx...

复制 $2b$12$ 开头到行末 的整段(含 $),不要带前缀 token= 以外的多余文字。

示例:

cd ComfyUI
python3 main.py --listen 0.0.0.0 --port 8188 2>&1 | tee comfyui.log
# 另开终端:
grep "use token=" comfyui.log

若用平台脚本启动(如 launch_comfy_ui.sh),查平台日志:

grep "use token=" /var/log/sd_service.log | tail -1

3.2 方法二:读 login/PASSWORD 文件

设置过登录密码后,插件会把 token 写在:

ComfyUI/login/PASSWORD

第一行 通常就是 API token:

head -n 1 ComfyUI/login/PASSWORD

输出应类似 $2b$12$...。请 勿将文件内容提交到 git 或发给他人

3.3 方法三:浏览器 Cookie(临时调试,不推荐长期配置)

  1. 浏览器已登录 ComfyUI 主站
  2. F12 → Application(应用)→ Cookies → 你的 ComfyUI 域名
  3. 找到 AIOHTTP_SESSION,复制 Value(一般以 gAAAA 开头)

调用 API 时请求头:

Cookie: AIOHTTP_SESSION=你复制的Value

Cookie 会随登出、换密码、重启策略失效,批量任务请用 Token


4. API 调用说明

4.1 Token 方式(推荐)

请求头:

Authorization: Bearer $2b$12$你的token整段
Content-Type: application/json

在 JSON body 里带 token 字段(ComfyUI-Login 常用方式):

{
  "prompt": { },
  "client_id": "任意唯一字符串",
  "token": "$2b$12$你的token整段"
}

4.2 最小 curl 自测

先准备 API Format 工作流 workflow_api.json(界面 Save API Format 导出),再组 request.json

{
  "prompt": { },
  "client_id": "test-001",
  "token": "$2b$12$你的token"
}

(将 prompt 换成真实工作流对象。)

URL="http://127.0.0.1:8188"
curl -s -X POST "$URL/prompt" \
  -H "Content-Type: application/json" \
  -d @request.json

成功时返回含 prompt_id 的 JSON。远程把 127.0.0.1 换成公网 IP,并确认安全组已放行端口。

4.3 鉴权对照

方式 从哪里拿 用法 稳定性
Token 启动日志 /login/PASSWORD 首行 Authorization: Bearer 或 JSON token 字段 高,推荐
Cookie 浏览器AIOHTTP_SESSION 请求头Cookie: 低,易过期

5. 常见问题

现象 处理
没有/login 页面 确认插件在custom_nodes/ComfyUI-Login;完整重启 ComfyUI
日志里没有use token= 先浏览器打开/login 设一次密码;或查看 login/PASSWORD 是否生成
API 返回 401 / 未登录 token 抄错、过期;换PASSWORD 首行;勿把 Cookie 当 token 混用
浏览器能登录,curl 不行 curl 未带 token/Cookie;检查 URL 端口与http
改密码后旧 token 失效 用新启动日志或新PASSWORD 第一行,更新客户端里保存的 token
clone Login TLS 失败 用 §1.2 ZIP;或换ghproxy.net 镜像地址

6. 参考