本站部署说明(Cloudflare Pages)
站点:https://minglcangkuku.pages.dev/
周报密码与隐藏入口(重要)
Cloudflare 规则
Pages Secret 只能写入,不能读回。
部署时无法「从 Cloudflare 取出明文密码」再写进网页。官方设计如此。
因此采用「同一明文,部署时写两边」:
| 位置 | 存什么 | 作用 |
|---|---|---|
Cloudflare Secret WEEKLY_PASSWORD | 明文(仅 CF 侧) | functions/_middleware.ts 服务端校验 + HttpOnly cookie |
构建产物里的 weeklyAuth.ts | SHA-256 哈希(无明文) | 前端门禁,挡住 SPA 软跳转先露内容 |
.env 的 WEEKLY_SLUG | 私密路径段 | 构建 rewrite + 生成访问 URL;不在导航展示 |
流程:
- 本机
.env设置WEEKLY_PASSWORD、WEEKLY_SLUG(可选SITE_ORIGIN) npm run deploy→ bake 哈希与路径 → 同步 Secret → 上传站点- 部署结束打印 Weekly URL,并写入本机
.weekly-url(已 gitignore) - 用户解锁后,
sessionStorage缓存当前哈希;改密/改 slug 重新部署后旧缓存失效
改密或改入口:
powershell
# 编辑 .env 里的 WEEKLY_PASSWORD / WEEKLY_SLUG
npm run deploy
# 浏览器清掉该站 cookie,用新 URL 访问一键发布
powershell
npm install
# 首次:复制 .env.example → .env,填入 WEEKLY_PASSWORD 与 WEEKLY_SLUG
npx wrangler login
npm run deploy为何以前「随便密码也能进 / 先看到周报」
- VitePress 站内软跳转只拉
/assets/weekly_*.js,不一定重新走文档请求,服务端中间件管不到,就会先渲染正文。 - 现已同时:拦截
/assets/*weekly*+ 前端门禁(未解锁隐藏正文)。 - Cookie 与密码 HMAC 绑定,改密后旧 cookie 立即失效。
- 旧路径
/weekly返回 404;真实入口仅/{WEEKLY_SLUG}/。
周中 logs 字段
时间 | 仓库 | 事件 | 提交内容 | 内容摘要(时间到分钟)docs/weekly/index.md 由构建脚本生成,勿手改。