Site Loader

某客户告知,企业网站后台管理员的登录密码忘记了,进行密码重设操作,点击邮件中密码重设链接跳转后,提示“您的密码重设链接无效,请在下方请求新链接。”

重新输入用户名或电子邮件地址,再次获取新密码,问题复现。

是什么原因导致呢?经过分析,问题原来出在邮件中的重设链接上,我们来看一下邮件当中的链接。

鼠标指着邮件中的链接,注意看浏览器左下方当前链接提示,链接最后面是不是多了一个“右尖括号”?

有趣的是,问题貌似多出现在企鹅系邮箱系统,以下是outlook.com邮箱的网页截图,没有上面所述情况。

其他邮箱待测试。

根源找到了,如何解决呢?

SSH链接Ubuntu,到网站的根目录,编辑wp-login.php。

找到以下代码。

删除前面的 ‘<‘ . ,以及后面的 >

编辑wp-includes/pluggable.php

找到以下代码

同样删除前面的 ‘<‘ . ,以及后面的 >

再次操作密码重设,前后的尖括号没有了。

点击重设链接,密码重设页面可以正常显示了。

但小编通过在另一个WordPress网站上测试,以上办法并不凑巧,无论小编如何修改以上两个文件,密码重置邮件中的链接仍然带有尖括号。

当然,你可以通过复制链接,粘贴到浏览器地址栏,删除尖括号,再打开链接来处理,但对于一般用户来说还是不方便的。

经过一番思索,原来是网站为了保护后台登录地址,防止暴力破解,使用了All In One WP Security & Firewall插件中的“重命名登录页面功能”,更改了默认的后台登录地址所导致。同时也不引用以上所述两个文件了。

我们来做个测试,启用All In One WP Security & Firewall插件,启用“重命名登录页面功能”,输入aaa,如下图,保存设置,WordPress默认的后台登录地址是“网址/wp-admin”,修改后将变成“网址/aaa”。

在修改后的后台登录页面进行密码重设操作,打开邮件,链接如下显示。

点击后,同样显示链接无效。

对比一下未启用“重命名登录页面功能”时,邮件所显示的链接,是默认的wp-login.php。

怎么办?停用“重命名登录页面功能”?网站的安全保护措施还是需要的,总不能杀鸡取卵。

以下使用另一种解决办法,不管有没有使用All In One WP Security & Firewall插件,修不修改wp-login.php和pluggable.php两个文件,此方法也是适用的。

使用WordPress后台的主题编辑器或在服务器上进入当前主题的目录,编辑functions.php文件,在最后添加以下代码。

请注意$msg .= network_site_url开头的那一行代码,由于小编启用了“重命名登录页面功能”,并设置成aaa,所以此处是aaa,可改成你启用“重命名登录页面功能”时所设置的地址。

如没有使用“重命名登录页面功能”,此处应改为默认的wp-login.php。

其中“站点名称”一项也可按实际情况修改。

保存后再进行密码重设测试,收到邮件所示链接如下。

点击重置链接,重置密码页面可以正常显示了。

问题解决!