Ghost密码重置记录
登不上ghost了,几个常用的密码都不行,根本不知道发生了啥。
然后点Forget,半天没反应,一分钟后告诉我说“504 gateway timeout”
然后陷入了小小的恐慌
急中生智,临时改了下ghost的源码,直接把密码重置链接拿到手,解决问题。
chrome是这样的:
ghost的log(可以在根目录下> ghost log
查看)说这样:
???
到现在还是不知道为什么。
估计是邮箱发送设置配置的不对。但是以前搭在别处的用本地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);
搞定。