diff --git a/.env.example b/.env.example index 3589634a..1bb489de 100644 --- a/.env.example +++ b/.env.example @@ -31,6 +31,15 @@ NOTE_OUTPUT_DIR=note_results IMAGE_BASE_URL=/static/screenshots DATA_DIR=data +# 自托管访问鉴权(默认关闭) +# 公网部署建议开启。开启后 Web 端会显示访问密码登录页,浏览器插件需要在设置页登录。 +BILINOTE_AUTH_ENABLED=false +# BILINOTE_AUTH_PASSWORD=please-change-me +# 可选:固定 token 签名密钥;不填时会从访问密码派生,改密码会让旧登录失效。 +# BILINOTE_AUTH_SECRET= +# 登录有效期(天) +BILINOTE_AUTH_TOKEN_EXPIRE_DAYS=30 + # FFMPEG 配置(Docker 镜像已内置 ffmpeg,留空即可;自建/桌面端可填绝对路径) FFMPEG_BIN_PATH= diff --git a/BillNote_extension/src/background/main.ts b/BillNote_extension/src/background/main.ts index 7883e316..d8925f3a 100644 --- a/BillNote_extension/src/background/main.ts +++ b/BillNote_extension/src/background/main.ts @@ -74,7 +74,10 @@ async function startTask(url: string, title?: string): Promise<{ ok: boolean, ta try { const res = await fetch(`${backend}/api/generate_note`, { method: 'POST', - headers: { 'Content-Type': 'application/json' }, + headers: { + 'Content-Type': 'application/json', + ...(settings.authToken ? { Authorization: `Bearer ${settings.authToken}` } : {}), + }, body: JSON.stringify({ video_url: url, platform, diff --git a/BillNote_extension/src/components/MarkdownView.vue b/BillNote_extension/src/components/MarkdownView.vue index a492703f..bace8db5 100644 --- a/BillNote_extension/src/components/MarkdownView.vue +++ b/BillNote_extension/src/components/MarkdownView.vue @@ -1,13 +1,98 @@ @@ -340,9 +417,47 @@ onUnmounted(() => { {{ (t.result?.audio_meta as { title?: string } | undefined)?.title || t.title || t.videoUrl }} {{ t.status }} + + +