📢 新文章推送 · 每周更新优质内容 · 订阅更新 →
向下滚动
技术笔记

博客文章加密与定时发布功能实现

AI 智能总结

文章加密

并非所有文章都适合公开。开发日志、私人笔记、会员专属内容等场景需要密码保护。Lumin Blog 的文章加密功能支持为单篇文章设置阅读密码,实现前后端双重校验。

Front Matter 配置

在文章头部设置密码:

1---
2title: "加密文章示例"
3password: "your-secret-key"
4---

前端加密验证

当访问加密文章时,页面显示密码输入框而非文章内容。密码通过 SHA-256 哈希后与预存储的哈希值比对:

1async function verifyPassword(input, storedHash) {
2  const encoder = new TextEncoder();
3  const data = encoder.encode(input);
4  const hashBuffer = await crypto.subtle.digest('SHA-256', data);
5  const hashArray = Array.from(new Uint8Array(hashBuffer));
6  const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
7  return hashHex === storedHash;
8}

验证通过后,前端使用获取到的解密密钥渲染文章内容。

安全考量

  • 绝不将明文密码写入前端代码:密码通过后端 API 预哈希存储
  • 使用 Crypto API:浏览器原生 Web Crypto API,无需第三方加密库
  • 双重验证:前端做首次验证 + 后端 API 做二次校验,防止绕过
  • 限流防爆破:后端 API 限制密码尝试频率

使用建议

建议说明
密码复杂度建议 8 位以上,包含大小写字母、数字、特殊字符
定期更换不建议长期使用同一密码
不要复用不同文章使用不同密码
避免明文绝不在 URL 参数或前端变量中暴露密码

定时发布

定时发布允许提前写好文章,设置未来某个时间点自动发布。适合假期预设文章、连载内容定时更新等场景。

工作原理

  1. Hugo 构建时检查文章的 date 字段
  2. 默认情况下,未来日期的文章不会发布(被视为草稿)
  3. Cloudflare Pages 等部署平台支持定时构建触发

Hugo 配置

Hugo 默认只发布日期小于等于当前时间的文章。可以强制发布未来文章:

1# 本地预览未来文章
2hugo server --buildFuture
3
4# 生产构建包含未来文章
5hugo --buildFuture

Front Matter 配置

1---
2title: "定时发布的文章"
3date: 2026-06-01T08:00:00+08:00
4draft: false
5---

自动部署策略

在 Cloudflare Pages 等平台配置定时构建:

方式说明
Deploy HooksCloudflare Pages 提供 Deploy Hook URL,可通过外部 cron 服务定时触发
GitHub Actions配置 schedule 定时推送或触发 Webhook
第三方 Cron 服务使用 cron-job.org 等免费服务定时请求 Deploy Hook

每次定时构建会检查所有文章,date ≤ now() 的文章自动变为可见。

建议工作流

  1. 提前写作:周末写好下周的文章
  2. 设置日期:将 date 设为目标发布日期
  3. 定期构建:每天凌晨自动触发一次 Hugo 构建和部署
  4. 文章自动上线:到达预定日期后,文章在下次构建时自动发布

两个功能的协同

加密和定时发布可以组合使用。例如:为付费会员提前写好专属文章,设定为未来日期 + 加密保护,在会员日当天自动解密发布。

8 / 16
版权声明

本文作者 Lumin

本文链接 https://www.zhengquan.xyz/tech/article-encrypt-schedule/

许可协议 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

请作者喝杯咖啡 ☕

  • 微信打赏
    微信支付
  • 支付宝打赏
    支付宝
点击按钮查看打赏二维码
🎁 推荐工具
试试这些实用在线工具,提升工作效率
前往工具集 →

留言评论

期待你的想法

评论加载中