如何使用基本身份验证HTTP头登录WordPress站点?

时间:2017-10-08 作者:JPollock

我希望以登录用户的身份运行一些自动验收测试。我的验收测试是使用Ghost Inspector运行的,Ghost Inspector可以发送基本的身份验证标头。

REST API有一个基本的身份验证插件,所以除非有人用更好的解决方案来回答这个问题,否则我将对其进行黑客攻击,以处理任何请求。

是的,基本身份验证不是超级安全的,但它和wp登录一样安全——如果使用HTTPS,也可以。还有,这是一个测试点,不担心安全问题。

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

我只想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说目标是一个试验场。。。这应该很好。

结束

相关推荐

unit testing admin password

我正在为我的插件编写单元测试,我需要一个登录的用户来测试,但我在任何地方都找不到管理员密码。有人知道默认的管理员密码是什么吗?我正在扩展WP_UnitTestCase 并从https://unit-tests.svn.wordpress.org/trunk.我目前的代码:<?php require_once(\'myPlugin.php\'); class MyPluginTest extends WP_UnitTestCase{ function