WordPress:重置密码始终无效密钥

时间:2018-12-23 16:20:35

标签: php wordpress

我遇到了一个大问题,找不到解决方案。我已经安装了Ultimate Member Plugin并激活了它。 ^

当我现在重置用户密码时,我从页面中收到一封电子邮件,其中包含由UM函数调用localhost/my-site/触发的插件的protected $redirectTo = '/';文件中生成的重置链接此功能:

class-password.php

要检查哈希,我在WordPress um_user( 'password_reset_link' )文件中的函数/** * Get Reset URL * * @return bool|string */ function reset_url() { $user_id = um_user( 'ID' ); delete_option( "um_cache_userdata_{$user_id}" ); //new reset password key via WP native field $user_data = get_userdata( $user_id ); $key = get_password_reset_key( $user_data ); $url = add_query_arg( array( 'act' => 'reset_password', 'hash' => $key, 'user_id' => $user_id ), um_get_core_page( 'password-reset' ) ); return $url; } 中添加了error_log,以通过键记录生成的哈希值:

get_password_reset_key

我还从Ultimate Member向电子邮件模板中添加了相同的哈希器,结果是:

users.php

因此,您可以看到WordPress产生了4个散列,直接从电子邮件中返回的error_log( $hashed ); 产生了一个散列。

现在,我将在电子邮件中生成的哈希保存到字段[23-Dec-2018 15:57:41 UTC] 1545580661:$P$BiLzjLuPDHwVtUlnLmEQE19D4UpgJf0 [23-Dec-2018 15:57:41 UTC] 1545580661:$P$BCAl/MTbiuCyqiix7310EOEn.eJlQz1 [23-Dec-2018 15:57:41 UTC] 1545580661:$P$BH0W.btK4hYFNDidKh.DA46KZhp5Ay. [23-Dec-2018 15:57:41 UTC] Hash from mail: 1545580661:$P$BOzHQ9mIasqhbdYnkK0n.EXhGXBFyD0 [23-Dec-2018 15:57:41 UTC] 1545580661:$P$BGRg8guQBbhuNKdMCIDSweNUDKLG1v/ 的{​​{1}}表值中,然后按一下“重置”按钮,便可以更改密码了。

那么为什么生成的哈希值不正确?我该如何解决?我的意思是我可以更改函数并生成一个新的哈希,然后将其再次写入数据库,但这不是解决方案。

2 个答案:

答案 0 :(得分:2)

解决了我的UM密码重置问题(指出“无效密钥”)的问题是,禁用了我的/password-reset页面上的任何缓存。不知道这是否可以解决您的问题,但是如果其他任何人都来了。

答案 1 :(得分:1)

无论是否使用插件,仍然有这个问题的人, 检查电子邮件中的重置链接。 在我的示例中,链接是

<https://mywebsite.com/wp-login.php?action=rp&key=XXsomehashXX&login=username>

生成的URL末尾带有字符>, 在浏览器中看起来像这样

https://mywebsite.com/wp-login.php?action=rp&key=XXsomehashXX&login=username%3E

解决此问题所需要做的就是删除网址末尾的%3E,并且密码重置表单开始起作用!