8000 feat(server): 内置 GitHub 登录 by InfinityPacer · Pull Request #23 · InfinityPacer/meterleaf · GitHub
[go: up one dir, main page]

Skip to content

feat(server): 内置 GitHub 登录 - #23

Merged
InfinityPacer merged 3 commits into
mainfrom
feat/github-login
Oct 1, 2026
Merged

InfinityPacer merged 3 commits into
mainfrom
feat/github-login

Conversation

@InfinityPacer
Copy link
Copy Markdown
Owner

问题

Meterleaf 没有内置认证,对外开放时要在反向代理前另部署认证服务(例如 authentik),只为保护一个应用就要多维护一套服务。

变化

  • 新增可选的 GitHub 登录。填写 METERLEAF_GITHUB_CLIENT_ID、METERLEAF_GITHUB_CLIENT_SECRET、METERLEAF_GITHUB_USERS、METERLEAF_PUBLIC_URL 后开启,只允许名单内的 GitHub 账号访问页面和读取接口。四项都不填时行为不变,只填一部分时拒绝启动。
  • 会话保存在签名的 HttpOnly Cookie 中,服务端不存状态。默认 30 天(METERLEAF_SESSION_DAYS),使用中每天顺延一次。每次请求都重新核对允许名单,删除账号即撤销访问。更换 Client Secret 会让所有会话失效。
  • 未登录时页面跳转到 GitHub,/api/* 返回 401,由前端现有的会话失效提示处理。健康检查、采集器写入地址和 PWA 静态资源仍可直接访问。
  • 「关于」页显示当前账号和退出登录入口。
  • 部署指南、.env.example、compose.yaml、README 和 CHANGELOG 同步更新。

验证

  • bun test tests 353 个全部通过,新增的 tests/auth.test.ts 覆盖配置校验、跳转与 401、OAuth state 校验、允许和拒绝的账号、Cookie 篡改、按天顺延、闲置 30 天过期、从名单移除、开放重定向和退出。
  • bun run typecheck 通过,改动文件通过 Prettier 检查。
  • 以本地构建的 amd64 镜像在实际部署上运行。经 HTTPS 反向代理,未登录时 / 跳转 GitHub、/api/view 返回 401、/api/health 返回 200。用允许的账号完成真实的 GitHub 授权,回到总览并能读取数据,「关于」页显示账号和退出入口。登录开启后,本机采集器照常推送。

🤖 Generated with Claude Code

InfinityPacer and others added 3 commits October 1, 2026 20:22
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@InfinityPacer
InfinityPacer merged commit 27b9877 into main Oct 1, 2026
2 checks passed
@InfinityPacer
InfinityPacer deleted the feat/github-login branch October 1, 2026 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0