1.安装插件 npm install –save hexo-blog-encrypt
或者 yarn add hexo-blog-encrypt
2.在 站点配置文件 中启用该插件:
3.然后在你的文章的头部添加上对应的字段,如 password, abstract, message
将“ password”值添加到帖子的前面,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 --- title: Hello World # 公开 date: 2016-03-30 21:18:02 # 公开 abstract: # 首页显示的摘要 # 公开 category: [测试] # 公开 tags: [测试, Hexo加密] # 公开 message: # 引导输入密码提示语,点开首页可查看 # 公开 password: 123456 # 密码 # 不公开 wrong_pass_message:噢,这是无效的密码。请检查并重试。 fault_hash_message:哦,这些解密的内容无法验证,但是您仍然可以看一下。 ---
然后使用 hexo clean && hexo g && hexo s ,来查看效果
1 2 3 4 5 6 7 8 9 10 11 12 --- title: 文章加密测试 date: 2020-01-06 20:20:20 category: 测试 tags: - 测试 - Hexo加密 keywords: 博客文章密码 password: password abstract: 密码:password message: 加密测试,输入密码,查看文章 ---
password: 是该博客加密使用的密码
abstract: 是该博客的摘要,会显示在博客的列表页
message: 这个是博客查看时,密码输入框上面的描述性文字
5.自定义 5.1 加密目录 如果您有关于TOC的帖子,则应更改模板的代码。以默认主题“ landscape”为例:
您应该在hexo/themes/landscape/layout/_partial/article.ejs
中找到article.ejs文件。
找到类似<%post.content%>
的代码,该代码通常在第30行。
将<%post.content%>
替换为以下代码块:
1 2 3 4 5 6 7 8 9 10 11 <% if(post.toc == true){ %> <div id="toc-div" class="toc-article" <% if (post.encrypt == true) { %>style="display:none" <% } %>> <strong class="toc-title">Index</strong> <% if (post.encrypt == true) { %> <%- toc(post.origin, {list_number: true}) %> <% } else { %> <%- toc(post.content, {list_number: true}) %> <% } %> </div> <% } %> <%- post.content %>
5.2如果你对默认的主题不满意,或者希望修改默认的提示和摘要内容,你可以添加如下配置在 站点配置文件 中。 post's front matter > _config.yml (in the root directory) > default
1 2 3 4 encrypt: enable: true default_abstract: 这是一篇加密文章,内容可能是个人情感宣泄或者收费技术。如果你确实想看,请与作者联系。 default_message: 输入密码,查看文章。
这样,对于每一篇需要加密的文章就不必都在在头部添加 abstract 和 message 字段了,脚本会自动添加默认的内容填充。
如果你希望对某一篇特定的文章做特殊处理(如本文的 abstract ),可以在对应文章的头部添加
1 2 3 4 5 6 7 8 9 10 11 --- title: 文章加密 date: 2019-01-04T22:20:13.000Z category: 教程 tags: - 博客 - Hexo keywords: 博客文章密码 password: TloveY abstract: 密码:TloveY ---
此时,博客头部的 abstract 会覆盖 站点配置文件 的 default_abstract 实现自定义。
5.3 关于回调 在某些博客中,某些元素在解密后可能无法正常显示。这是一个已知的问题。当前的解决方案是检查博客中的代码,以了解在发生onload事件时调用了哪些函数。然后在您的文章结尾处编写这些代码。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 --- title: Callback Test date: 2019-12-21 11:54:07 tags: - Encrypted --- This is a blog to test Callback functions. You just need to add code at the last of your post like following: It will be called after the blog decrypted. <script> // add script tag and code at the last of your post alert("Hello World"); </script>
演示:回调示例 。
6.存在问题
如果你开启了 字数统计功能 的话,那么本文的字数会显得比实际值大。
加密文章内部分脚本会失效,已知 代码复制 失效。
加一个测试图片
附上本文配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 文首: --- title: 文章加密测试 date: 2020-01-06 20:20:20 category: [测试] tags: [测试, Hexo加密] keywords: 博客文章密码 password: password abstract: 密码:password message: 加密测试,输入密码,查看文章 wrong_pass_message: Oh, this is an invalid password. Check and try again, please. wrong_hash_message: Oh, these decrypted content cannot be verified, but you can still have a look. --- 文末: <script> // add script tag and code at the last of your post alert("Hello World, 密码正确"); </script>
参考