计划写宝宝成长日记,希望其他人不能浏览,通过密码验证的方式查看。而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
实际的效果如下:
password
的值如果填写明文密码,则无效。
- 但是这种方式并不安全,别人查看md文件可以看见密码,可以被解密,特别是较短位数的数字串很容易被解密。所以一定要将密码设置得复杂一点。
2. 插件hexo-blog-encrypt
主题自带的verifyPassword
配置项已能满足基本需求,使用插件功能更加丰富。
- 1.安装插件
在终端中cd到博客文件夹,输入以下命令:
npm install --save hexo-blog-encrypt
安装完成后,在根目录下的package.json
文件的dependecies
依赖中看到encrypt插件
"dependencies": {
"hexo-blog-encrypt": "^3.1.6",
}
- 2.在对应文章的信息头
Front-matter
中写上password
属性和密码
即可。和主题自带的verifyPassword
配置项不同之处在于,这儿密码是明文的,verifyPassword
配置项的密码是SHA256
加密的。
显示效果如下。
不过这种密码是明文放在md文件中的,不安全。
3. encrypt插件的更多功能
3.1. 自定义密码输入界面的提示语
两种方式:
(1)在博客根目录配置文件中添加配置项和message
属性
# 文章加密
# hexo-blog-encrypt
# https://github.com/D0n9X1n/hexo-blog-encrypt
encrypt:
enable: true
message: 你的通行证呢,点击此处输入试试噢🫣
此种方法,所有的加密文章显示同样的提示语。
(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-matter
的summary
属性冲突。我填写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: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。
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: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容。
有default、blink、shrink、flip、up、surge、wave、xray等主题可供选择,可在线看看,挑选自己喜欢的。
3.6. 文章重新激活密码
输入密码后,同一浏览器再次打开无需密码。点击底部的Encrypt again
按钮,重新加密,再次打开又需要输入密码了。