This page looks best with JavaScript enabled

Hugo | 为博客文章添加密码

 ·  ☕ 2 min read

前言

因为一些原因想给博客的一些文章添加访问密码,于是完成了这篇文章。鉴于加密脚本安装不便,完成文章后也需要额外运行一行命令,遂采用此方法。需要注意的是,此方法的加密并非算法加密,不适用于一些需要高度机密的场合。

步骤

参考添加文章加密功能。文章中博主使用的是LoveIt主题,我稍微修改了下让其在Mogege/Ftopia/LeaveIt主题中能使用。

layouts/_default/single.html中添加:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    <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属性即可进行加密,只有输入了正确密码才能打开文章,否则会回退到之前的页面。用法如下:

1
2
3
4
---
title: 随笔
password: test
---

示例:test

报错解决方式

在渲染文章页面时报错,请根据报错内容进行修改,也有可能是上面代码粘贴的位置有问题,需要放在文件中间位置。

如果本地渲染无问题,Github仓库推送无问题,但是推送到自动部署后无法显示新文章:首先查看博客根目录.gitignore文件中是否有提及相关文件。若没有,以Vercel自动部署为例,查看博客project是否同步github仓库最新更新记录。如果卡在一个旧的更新推送上,新建一个新Project命名为test以防翻车,直接clone你的博客github仓库,然后部署。成功后即可使用Vercel给你分配的域名访问博客,如果成功显示加密文章,在Vercel删除旧的project即可。如果你绑定了自己的域名,记得将域名添加到新的project中。


Roelxy
WRITTEN BY
Roelxy
新世紀摸魚戰士