已修复
第一篇博客就写这个坑吧。
在使用 Sky Blog Theme 主题后,在登录页面会一直报错登录失败。
省流
原因
因为jsencrypt.min.js 加载失败导致没办法加密密码导致传到后台的password永远为空,然后就导致登陆不了。
解决方案
临时解决方案
在登录界面打开控制台(F12)输入代码替换掉原本的脚本
var script = document.createElement('script');
script.src = 'https://unpkg.com/[email protected]/bin/jsencrypt.min.js';
document.head.appendChild(script);长效解决方案
打开docker映射的地址,路径是
\halo2\themes\theme-sky-blog-1\templates\login_local.html,把script换成
<script src="/webjars/jsencrypt/3.5.4/bin/jsencrypt.min.js" defer></script>重启镜像

终极解决方法
等作者更新,去这里催更
心路历程
一开始,我还以为是Chrome自动填写密码后我没注意把自己的密码覆盖掉了。
查询了文档看如何重置密码,然后询问AI后,给出了解决方案
使用命令 docker exec -it halo-halodb-1 psql -U halo -d halo 进入docker镜像后
又使用下面的命令重置密码
UPDATE extensions SET data = convert_to(
jsonb_set(
convert_from(data, 'UTF-8')::jsonb,
'{spec,password}',
'"{bcrypt}$2a$10$7tBEL1sNQSr/uWtLZHLmCeA9IGx0I9/Jz//3Uwo/anIm9xdxv.xrO"'
)::text,
'UTF-8'
) WHERE name = '/registry/users/shimakaze';但是还是登录不了,百思不得其解。
身为前端,我想看看请求长啥样,然后打开控制台看了看,ん?密码呢?怎么没有传,试了几次,发现都没传。

然后就开始查为什么没有传,然后发现在一堆请求里面,有一个扎眼的红色,jsencrypt 请求是404。

然后我尝试使用代码偷梁换柱(上面的临时方法),然后发现就能请求成功能传入密码也可以登录了。
后面跑到了主题的项目内,看了下Issus,果然有人提也给了解决方案,我也一并贴在上面了,是那个长效解决方案。
结语
稀奇古怪的bug,让我查了将近30分钟,我看着主题前天才更新,可能作者也没注意引用已经静默升级了。
真好啊,人生第一篇博客的素材不就来了吗