hugo文章加密详细教
slug
hugo-text
status
Published
tags
hexo
summary
hexo
type
Post
hugo添加文章加密的几种方法
一、简单加密
LoveIt主题
将
\themes\LoveIt\layouts\posts\single.html
拷贝到\layouts\posts\single.html
,打开拷贝后的文件,在{{- $params := .Scratch.Get "params" -}}
的下一行添加如下代码:{{- $password := $params.password | default "" -}}
{{- if ne $password "" -}}
<script>
(function(){
if({{ $password }}){
if (prompt('请输入文章密码') != {{ $password }}){
alert('密码错误!');
if (history.length === 1) {
window.opener = null;
window.open('', '_self');
window.close();
} else {
history.back();
}
}
}
})();
</script>
{{- end -}}hugo-theme-stack主题 LeaveIt主题也类似
在themes\hugo-theme-stack\layouts_\default目录修改single.html文件,在{{ partialCached "footer/footer" . }} 上面添加代码
<div class="post-password">
{{ if ( .Params.password | default "" ) }}
<script>
(function(){
if (prompt('请输入文章密码') != {{ .Params.password }}){
alert('密码错误!');
if (history.length === 1) {
window.opener = null;
window.open('', '_self');
window.close();
} else {
history.back();
}
}
})();
</script>
{{ end }}
</div>之后只要在文章的头部加上
password
属性即可进行加密,只有输入了正确密码才能打开文章,否则会回退到之前的页面。用法如下---
title: 文章加密
password: 888
---这个加密的文章密码假设置为888
打开文章会要求输入密码,输入后就可以浏览文章了
这种加密比较简单,适合对安全性没有太大要求的朋友,另外每次刷新网页都需要输入密码,有点麻烦。
二、插件加密
插件加密有两种
一种是hugo-encrypt
一种是hugo-encryptor
我们这里介绍hugo-encryptor的具体使用方法
windows下安装pycrypto比较困难,本地电脑又不想安装linux,所以我们选择到girhub的Actions自动编译里面安装。
我们先在本地电脑搭建好huog,安装主题,修改和完善主题
把hugo-encryptor下载解压
把shortcodes文件夹复制的blog的layouts目录
把requirements.txt和hugo-encryptor.py复制到blog的根目录
修改hugo-encryptor.py文件 (如果不修改会出现提交密码没有反应)
将src="/decrypt.js”修改为
这样就不用每次都复制decrypt.js到博客的public目录里面了,
再到blog根目录建一个文件夹 .github/workflows
在文件夹里面建立一个main.yml 文件 文件里面的代码如下
name: Hugo Build and Deploy
on:
push:
branches:
- main
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1 # v2 does not have submodules option now
with:
submodules: true
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: latest # 应用最新的hugo
extended: true # 我的主题需要应用hugo-extende
- name: requirements.txt
run: pip install -r requirements.txt
- name: Build
run: hugo --gc --minify
- name: chmod +x
run: chmod +x hugo-encryptor.py
- name: pycryptodome
run: pip install pycryptodome
- name: hugo-encryptor.py
working-directory: ./
run: python3 hugo-encryptor.py
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} #这里在repo settings里填入SSH私钥
external_repository: xxxxxx/888 # <- 改成自己的 user github page
publish_dir: ./public # <- 指定成品放置文件夹
publish_branch: gh-pages # <- 远端repo目标分支再到GitHub里面设置和本地的关联
建两个仓库,一个hugo1,一个hugo2, hugo1设置私密,仓库2选择公开,如果hugo用https://vercel.com/部署,也可以私密。
建立本地和你的github的关联
点击 New SSH key
Tlite随意,内容添加你本地生成的 id_rsa.pub 里面的内容
建立本地和hugo1直接的关联
在仓库里面点击settings/secrets/actions,点击New repository secret ,Name里面输入 ACTIONS_DEPLOY_KEY (这个名称必须和前面main.yml里面的代码保存一致)
里面填写 你的 id_rsa里面的内容。
在hugo1仓库页面,点击 . (就是一个点哈)。 把本地的blog根目录的里面文件全部拖拽到hugo1,点击回车后再点勾,就会将本地blog里面的文件全部上次到hugo1的仓库,稍等一分钟,应该就能在hugo2里面看到部署好的内容了,如果出现差错,可以到hugo1里面的Actions检查,看下是哪行代码失败,再进行适当调整。
一切顺利的话,就好hugo里面绑定域名。就可以访问了
我习惯用vercel,所以在vercel里面直接拉取hugo2的内容,再绑定域名就可以了。
安装好插件后,文章加密的方法就简单了
---
title: "An Encrypted Post"
---
Some text is required to be placed here.
<!--more-->
{{% hugo-encryptor "PASSWORD" %}}
# You cannot see me unless you've got the password!
This is the content you want to encrypt!
**Do remember to close the `hugo-encryptor` shortcodes tag:**
{{% /hugo-encryptor %}}再添加一个可以给hugo在线写文章的网站,完美了