Ghost密码重置记录

登不上ghost了,几个常用的密码都不行,根本不知道发生了啥。
然后点Forget,半天没反应,一分钟后告诉我说“504 gateway timeout”
然后陷入了小小的恐慌
急中生智,临时改了下ghost的源码,直接把密码重置链接拿到手,解决问题。

chrome是这样的:
----20171226230045

ghost的log(可以在根目录下> ghost log查看)说这样:
----20171226230150-1

???

到现在还是不知道为什么。
估计是邮箱发送设置配置的不对。但是以前搭在别处的用本地mailer好好的。

好在ghost的源码目录结构很清晰。
根据url,很容易就猜到密码重置的逻辑在[ghost]/core/server/api/authentication.js
然后,里面有个generateResetToken就是我们要改的地方了。

里面有个地方是生成resetToken,再转成resetUrl,再使用一个密码恢复邮件的模板发送邮件。
于是我在resetUrl的地方console.log一下试图把url输出出来。

然后发现并没输出。

可能log的并不是直接输到stdout的。不过这里好像看不出来是如何才能发log。
于是暴力写文件。

var fs = require('fs');

function zlog(info) {
    fs.writeFileSync('/..../ghost/content/gzz-recovery.txt', info);
}

//...
function sendResetNotification(data) {
    var adminUrl = globalUtils.url.urlFor('admin', true),
        resetUrl = globalUtils.url.urlJoin(adminUrl, 'reset', globalUtils.encodeBase64URLsafe(data.resetToken), '/');

zlog('reset url: ' + resetUrl);

----20171226230929

搞定。