wordpress - WordPress 自定义登录要求和使用身份验证挂钩的错误消息
问题描述
出于安全原因,我希望来自某个域的每个用户(现在我使用@company.com)都被强制使用使用 Google 登录按钮登录,所以我写了这个检查。
哪个工作正常,但登录页面上的错误消息没有改变,它说FOUT: Verkeerde logingegevens.
which is Dutch for ERROR: Wrong credentials.
. 我确实返回了一个带有不同消息的新错误,那么我将如何显示此消息?
function check_login($user, $username, $password) {
if (!empty($username)) {
if (substr($user->user_email, -12) == "@company.com") {
$user = new WP_Error( 'authentication_failed', __( '<strong>ERROR</strong>: Please login using Google.' ) );
}
}
return $user;
}
add_filter('authenticate', 'check_login', 100, 3);
解决方案
WordPress 核心
您的问题来自$user
您正在过滤的变量已经是 aWP_Error
而不是 a的事实WP_User
,因此您的过滤器无法工作,因为$user->user_email
is null
,希望 Wordpress 在其登录功能中使用另一个中间挂钩
您应该改用此过滤器wp_authenticate_user
,它将在从数据库中检索到用户之后但在检查密码之前触发,将用户转换为 WP_Error
function check_login($user) {
if ($user instanceof WP_User) {
if (substr($user->user_email, -12) == "@company.com") {
$user = new WP_Error( 'authentication_failed', __( '<strong>ERROR</strong>: Please login using Google.' ) );
}
}
return $user;
}
add_filter('wp_authenticate_user', 'check_login', 9, 1);
第三方插件
如果您使用的是安全插件,他们通常有一个禁用错误登录消息的选项,这里是如何在一些主要的禁用它
主题安全
该插件提供的一个选项是隐藏所有登录错误消息,您可以在插件的设置> Wordpress Tweaks > 取消选中登录错误消息中禁用此功能
或通过将此网址附加到您的网站来访问此页面/wp-admin/admin.php?page=itsec&module=wordpress-tweaks&module_type=recommended
文字围栏
推荐阅读
- javascript - 构建 Vuejs 项目后是否可以识别角色?
- android - Odoo 数据库多条件 AND 和 OR Android
- unity3d - 如何使 TextMeshPro 输入字段在布局中工作?
- python - 如何将 Upsert json 文件批量发送到 azure Cosmos DB(documentDB 模块)?
- java - 如何将日历实例添加到邮件正文?
- python - 替换熊猫数据框中的值 - 更改功能?
- python - python中的精确字符串匹配 - 两个列表元素的比较
- javascript - 如何使用另一个组件文件夹中的组件
- python - 无法访问服务器上的页面
- javascript - Less (lessc) 不适用于新系统。([TypeError: undefined is not a function])