我只想determine_current_user 过滤并检查HTTP基本身份验证数据以返回用户。
也许,只是也许,我只允许通过HTTP身份验证记录特定用户。
例如,可以通过设置用户选项来实现。
代码可能如下所示(由OP测试):
add_filter( \'determine_current_user\', function( $cur_user ) {
// If user already logged in or no HTTP AUTH info, return
if ($cur_user || empty($_SERVER[\'PHP_AUTH_USER\']) || empty($_SERVER[\'PHP_AUTH_PW\'])) {
return $cur_user;
}
// If there\'s no user with given username, return
$found_user = get_user_by(\'login\', $_SERVER[\'PHP_AUTH_USER\']);
if (!$found_user) {
return $cur_user;
}
// If password does not match, return
if ( ! wp_check_password( $_SERVER[\'PHP_AUTH_PW\'], $found_user->user_pass ) ) {
return $cur_user;
}
// Return found user ID only if allowed to login via HTTP in user meta
return get_user_option( \'http_auth_login_allowed\', $found_user->ID )
? $found_user->ID
: $cur_user;
}, 30);
我使用了优先级30,因为WP使用20(IIRC)从cookie中记录用户,所以这将在稍后运行,如果在cookie中找到用户,则不会执行任何操作。
检查以确保需求is_ssl() 可以添加,以提高安全性,即使-老实说-我不会在生产网站上运行它。但考虑到OP说目标是一个试验场。。。这应该很好。