博客文章私密的办法
如何给自己的博客文章私密
第一步
安装开源插件
npm install --save hexo-blog-encrypt |
安装完成后,在package.json文件的dependecies依赖中可以看到encrypt插件,证明安装成功
第二步
配置hexo中的_config.yml文件,在文件末尾添加如下代码
# 安全设置 |
配置项说明:
- enable: 是否启用加密功能,设置为 true 启用。
- abstract: 加密文章的摘要,显示在文章列表页。
- message: 密码输入框上方的描述性文字。
- tags: 标签配置,可以为不同标签设置不同的密码。
- wrong_pass_message: 密码错误时的提示信息。
- wrong_hash_message: 解密内容无法验证时的提示信息。
第三步
使用
在需要加密文章的YAML头部添加如下设置:
--- |
如果想让自己每次都输密码的话
出现 “正确输入一次密码后,后续访问无需再输” 的情况,核心原因是 hexo-blog-encrypt 插件默认开启了 “密码本地记忆功能”—— 它会将正确密码存储在浏览器的 localStorage 中(一种本地持久化存储机制,不会随页面关闭或浏览器重启消失),下次访问时自动读取验证,从而跳过输入步骤。以下详细解释原理,并提供 “取消自动记忆、每次强制输入密码” 的解决方案:
一、为什么会 “一直能进”?密码存在哪里了?
hexo-blog-encrypt 插件为提升用户体验,设计了 密码本地缓存逻辑,具体原理如下(结合摘要 1、4、6 的核心特性):
- 存储位置:正确输入密码后,插件会将 “加密文章标识 + 正确密码(或密码的加密哈希值)” 存储到浏览器的
localStorage中(不同浏览器通用,如 Chrome、Edge、Safari 均支持); - 自动验证:下次访问该加密文章时,插件会先检查浏览器
localStorage中是否存在该文章的有效密码记录; - 跳过输入:若记录存在且验证有效,插件会自动解密文章内容,无需再次输入密码;
- 持久化特性:
localStorage的数据默认会一直保留(除非手动删除或通过代码清除),因此即使关闭浏览器、重启电脑,下次访问仍会 “自动通过验证”。
二、如何实现 “每次访问都必须输入密码”?(3 种方案)
若需要取消自动记忆、强制每次访问都输入密码,可根据需求选择以下方案,核心思路是 “禁用插件的本地存储逻辑” 或 “主动清除存储的密码”:
方案 1:全局配置(所有加密文章均取消自动记忆)
在博客根目录的 _config.yml 中,给 hexo-blog-encrypt 插件添加 disableLocalStorage: true 配置,全局禁用密码本地存储功能,所有加密文章每次访问都需输入密码:
# 博客根目录 _config.yml |
配置后需执行 hexo clean && hexo g && hexo s 重新生成博客,本地预览验证效果,再部署到线上。
方案 2:单篇文章配置(仅指定文章取消自动记忆)
若只想让某篇加密文章每次都输入密码(其他文章保持记忆功能),可在该文章的 Front-matter 头部 单独添加 disableLocalStorage: true,优先级高于全局配置:
--- |
同样需执行 hexo clean && hexo g 重新生成,确保配置生效。
方案 3:手动清除已存储的密码(临时方案)
若只是偶尔需要 “重新输入密码”(比如借给他人使用后),无需修改配置,直接手动删除浏览器 localStorage 中存储的密码即可,步骤如下(以 Chrome 浏览器为例):
- 打开加密文章页面,按
F12或Ctrl+Shift+I打开「开发者工具」; - 在 ”+“ 处切换到「Application」(应用程序)面板,左侧找到「本地存储」→ 展开后选择当前博客的域名(如
localhost:4000或你的线上域名); - 在右侧存储列表中,找到名称包含
hexo-blog-encrypt或与文章标题相关的键(如hexo-blog-encrypt_【私密】我的个人学习笔记),右键点击「Delete」删除该记录; - 刷新页面,下次访问该文章就需要重新输入密码了。
三、关键说明
- 配置优先级:单篇文章的
disableLocalStorage: true> 全局配置的disableLocalStorage: true,即单篇配置可覆盖全局规则(比如全局允许记忆,单篇强制每次输入); - 浏览器兼容性:所有现代浏览器(Chrome、Edge、Safari 11+、Firefox 34+)均支持
localStorage,插件的记忆功能在这些浏览器中都会生效; - 安全性:
localStorage是 “浏览器本地存储”,仅保存在当前设备的浏览器中,不会上传到服务器,因此仅当前设备的当前浏览器能享受 “免输密码”,其他设备或浏览器访问仍需输入。
通过以上方案,即可实现 “每次访问加密文章都强制输入密码”,按需灵活控制密码验证频率。
