在对用户进行身份验证之前是否存在挂钩?

时间:2015-11-08 作者:Ken

我正在寻找一个钩子,可以在WP读取DB之前使用它来验证用户的登录凭据,但似乎在任何地方都找不到。是否存在?

我试过了add_filter/action(\'authenticate\', \'customcode\', 30, 3), 但这似乎在wp-login.php 请求页面,而不是在用户点击登录并且用户名/密码为POST.

2 个回复
最合适的回答,由SO网友:Ken 整理而成

啊,原来add_filter/action(\'authenticate\', \'customcode\', 30, 3) 是我一直在寻找的。。。

问题是,我的优先级太低,所以我用自定义代码创建的任何响应都会被其他过滤器覆盖。

So倾倒global $wp_filter[\'authenticate\'] 我可以看到以下过滤器:

20, wp_authenticate_username_password
30, wp_authenticate_cookie
99, wp_authenticate_spam_check
通过将优先级更改为100(或更高),我可以进行覆盖,并创建所需的响应,以处理通过登录页面提交的登录凭据。

SO网友:s_ha_dum

如果您查看以下代码wp-login.php both the login case and the default casewp_signon(). 在我看来,原因是管理用户已经拥有站点的有效cookie的情况。所以我不认为有一个只在登录时触发的钩子,但它很容易补偿。在身份验证之前,沿着该登录路径的第一个钩子是操作钩子wp_authenticateauthenticate (尽管这是一个有效的钩子)。

function customcode($username, $password ) {
  if (!empty($username) && !empty($password)) {
    // your code
  }
}
add_action(\'wp_authenticate\', \'customcode\', 30, 2);

相关推荐

如何筛选/钩入检索密码()以筛选$_POST[‘USER_LOGIN’]?

我正在开发一个网站,其中用户名是一个文件编号,称为CPF(将其视为国家ID),该网站具有以下掩码:000.000.000-00 我将用户名存储为普通数字,但我们所有的表单都必须有上面的掩码,这反过来使其_POST[\'user_login\'] 总是带着破折号和圆点。这是用户登录/用户名的示例:$_POST[\'user_login\'] = \'123.456.789-00\' $actual_username_ondb = \'12345678900\' 这对于登录来说不