Hexo博客搭建(9):设置文章加密


计划写宝宝成长日记,希望其他人不能浏览,通过密码验证的方式查看。而Hexo编写的md文章发布生成的静态页面默认是公开不加密的,所有人多可以访问,所以这就需要对博客文章进行加密,有两种方法,其一,通过matery主题中自带的verifyPassword配置项实现;其二,使用插件hexo-blog-encrypt

1. matery主题中的verifyPassword配置项

第一步:在matery主题文件夹中的config.yml文件 中找到verifyPassword配置项,默认是false,设置为true进行激活。

verifyPassword:
  enable: false
  promptMessage: 请输入访问本文章的密码
  errorMessage: 密码错误,将返回主页!

promptMessage是打开文章,显示的阻断提示语。
errorMessage是密码输入错误后的提示语。密码输入错误后将返回首页。
可以在config.yml文件中修改博客页面中显示的文字。

第二步:在对应文章的信息头Front-matter中写上password属性和SHA256加密的password的值即可,比如下面这样。

title: Hexo博客搭建(9):设置文章加密
date: 2022-05-14 09:35:08
password: 0a0667865bc17f9d624bcf11088057bbab46336e7dae65f3d5366f4f7a18333e

实际的效果如下:

00卡片的文章摘要显示效果

01弹框提示

  • password的值如果填写明文密码,则无效。

02密码输入错误

  • 但是这种方式并不安全,别人查看md文件可以看见密码,可以被解密,特别是较短位数的数字串很容易被解密。所以一定要将密码设置得复杂一点。

2. 插件hexo-blog-encrypt

主题自带的verifyPassword配置项已能满足基本需求,使用插件功能更加丰富。

  • 1.安装插件

在终端中cd到博客文件夹,输入以下命令:

npm install --save hexo-blog-encrypt

03插件安装

安装完成后,在根目录下的package.json文件的dependecies依赖中看到encrypt插件

"dependencies": {
  "hexo-blog-encrypt": "^3.1.6",
}
  • 2.在对应文章的信息头Front-matter中写上password属性和密码即可。和主题自带的verifyPassword配置项不同之处在于,这儿密码是明文的,verifyPassword配置项的密码是SHA256加密的。

显示效果如下。

04插件-默认效果-提示文字

05错误提示

不过这种密码是明文放在md文件中的,不安全。

3. encrypt插件的更多功能

3.1. 自定义密码输入界面的提示语

两种方式:
(1)在博客根目录配置文件中添加配置项和message属性

# 文章加密
# hexo-blog-encrypt
# https://github.com/D0n9X1n/hexo-blog-encrypt
encrypt:
  enable: true
  message: 你的通行证呢,点击此处输入试试噢🫣

此种方法,所有的加密文章显示同样的提示语。

06自定义提示文案

(2)在文章的Front-matter中添加message属性和对应值

title: Hexo博客搭建(9):设置文章加密
date: 2022-05-14 09:35:08
password: 123456
message: 你的通行证呢,点击此处输入试试噢🫣

此种方法,每篇文章可以配置不同的提示语。
优先级高于config.yml配置,所以想配置不一样的提示文案,每篇文章单独添加message属性即可。

3.2. 自定义文章摘要

默认的文章摘要是一串数字串,可以通在配置文件中过添加abstract属性修改。

# 文章加密
# hexo-blog-encrypt
# https://github.com/D0n9X1n/hexo-blog-encrypt
encrypt:
  enable: true
  abstract: 这儿有东西被加密了,点击看看😵
  message: 你的通行证呢,点击此处输入试试噢🫣

注:在matery主题中,abstract属性不显示,似乎文章头Front-mattersummary属性冲突。我填写summary属性值生效了。

3.3. 修改密码错误提示语

在博客根目录配置文件或文章Front-matter中添加wrong_pass_message属性。优先级级别和message属性一样。

# 文章加密
# hexo-blog-encrypt
# https://github.com/D0n9X1n/hexo-blog-encrypt
encrypt:
  enable: true
  abstract: 这儿有东西被加密了,点击看看😵
  message: 你的通行证呢,点击此处输入试试噢🫣
  wrong_pass_message: 通行证看着不太对,再试试噢🤔
  wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。

07修改密码错误提示语

3.4. 按tags标签加密

Front-matter中设置password值,虽然很灵活,但是配置或者修改起来非常麻烦,若需要修改密码,则需要一篇文章一篇文章按个修改。为此,可以通过按tags标签加密的方式实现全局加密,只需要提前在文章的Front-matter中添加加密的tag值,修改时只需修改一次。

3.4.1. 加密方法

修改文章Front-matter如下

title: Hexo博客搭建(9):设置文章加密
date: 2022-05-14 09:35:08
tags: [加密文章]
password: 

修改根目录config.yml文件中配置项如下

# 文章加密
# hexo-blog-encrypt
# https://github.com/D0n9X1n/hexo-blog-encrypt
encrypt:
  enable: true
  abstract: 这儿有东西被加密了,点击看看😵
  message: 你的通行证呢,点击此处输入试试噢🫣
  tags:
  - {name: 加密文章, password: 123456}
  - {name: tagName, password: 密码B}
  wrong_pass_message: 通行证看着不太对,再试试噢🤔
  wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。

(1) 此时表示,写有标签加密文章的文章都需要输入密码123456才可以访问,无需每一篇文章都重复填写密码。
(2) 可以对多个标签设置不同的密码。
(3) 文章Front-matter中设置的password优先级高于,所以每个文章仍可以设置单独的密码。

3.4.2. 对博文禁用 Tag 加密

只需要将博文头部的 password 设置为 “” 即可取消 Tag 加密.

title: Hexo博客搭建(9):设置文章加密
date: 2022-05-14 09:35:08
tags: [加密文章]
password: ""

3.5. 自定义主题样式

在在博客根目录配置文件或文章Front-matter中添加theme属性。优先级级别和message属性一样。

# 文章加密
# hexo-blog-encrypt
# https://github.com/D0n9X1n/hexo-blog-encrypt
encrypt:
  enable: true
  theme: shrink
  abstract: 这儿有东西被加密了,点击看看😵
  message: 你的通行证呢,点击此处输入试试噢🫣
  tags:
  - {name: 加密文章, password: 123456}
  wrong_pass_message: 通行证看着不太对,再试试噢🤔
  wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。

defaultblinkshrinkflipupsurgewavexray等主题可供选择,可在线看看,挑选自己喜欢的。

3.6. 文章重新激活密码

输入密码后,同一浏览器再次打开无需密码。点击底部的Encrypt again按钮,重新加密,再次打开又需要输入密码了。

08重新加密

4. 致谢

encrypt插件-Github官方说明


文章作者: Pamarus
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Pamarus !
评论
  目录