纯静态前端解密
现在博客支持 构建期加密、前端解密 的内容块:站点仍然是纯静态的,服务器不会参与解密,只有拿到正确口令的浏览器才能看到正文。
解密成功后,口令只会保留在当前页面会话的内存中,不会写入浏览器本地存储。站内导航期间可以自动解锁;刷新页面后需要重新输入,点击“重新上锁”会立即清除内存缓存。
推荐写法:secret 映射
先在本地或部署环境提供口令映射:
- 本地开发:创建
.vitepress/encryption-secrets.local.json - CI / Vercel:设置
BLOG_ENCRYPTION_SECRETS(JSON 字符串)或BLOG_ENCRYPTION_SECRETS_FILE
示例:
json
{
"friends-only": "very-strong-passphrase"
}然后在 Markdown 里写:
md
::: encrypt secret="friends-only" title="朋友可见附录" hint="提示文案可选"
这里放正常的 Markdown 正文。
- 列表
- 公式:$e^{i\\pi} + 1 = 0$
- 普通内部引用:[[给博客做了一次不小的翻新]]
:::临时写法:直接写 password
如果仓库本身就是私有的,或者只是想做一个公开演示,也可以直接写:
md
::: encrypt password="demo-static-2026" title="演示密文"
这段内容会在构建时被 AES-GCM 加密。
:::直接把口令写进仓库并不适合真正的私密内容;正式使用时请优先走
secret="..."+ 本地/环境变量映射。
在线演示
演示口令:demo-static-2026
演示密文
这段内容已经在构建阶段加密,站点仍然保持纯静态部署;只有在当前浏览器里输入正确口令后才会解密。
提示:年份就在口令最后
当前边界
- Vue 组件类语法不建议放进加密块里
- 加密块内部的双向引用预览会退化成普通链接
- 整篇文章如果都想加密,直接把正文整体包进
::: encrypt ...即可