加载中

少女祈祷中……

文章背景图

修复 Sky Blog Theme 下 Halo 登录失败的原因

2026-01-21
11
-
- 分钟
|

已修复

第一篇博客就写这个坑吧。

在使用 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);
  • 长效解决方案

  1. 打开docker映射的地址,路径是 \halo2\themes\theme-sky-blog-1\templates\login_local.html

  2. 把script换成 <script src="/webjars/jsencrypt/3.5.4/bin/jsencrypt.min.js" defer></script>

  3. 重启镜像

image-xawt.webp
  • 终极解决方法

等作者更新,去这里催更

https://github.com/sky121666/halo-theme-sky-blog-1

心路历程

一开始,我还以为是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';

但是还是登录不了,百思不得其解。

身为前端,我想看看请求长啥样,然后打开控制台看了看,ん?密码呢?怎么没有传,试了几次,发现都没传。

image-gzjv.png

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

image-k9ec.png
jsencrypt是一个用于加密的 JavaScript 库

然后我尝试使用代码偷梁换柱(上面的临时方法),然后发现就能请求成功能传入密码也可以登录了。

后面跑到了主题的项目内,看了下Issus,果然有人提也给了解决方案,我也一并贴在上面了,是那个长效解决方案。

结语

稀奇古怪的bug,让我查了将近30分钟,我看着主题前天才更新,可能作者也没注意引用已经静默升级了。

真好啊,人生第一篇博客的素材不就来了吗

评论交流

文章目录