wp_set_auth_cookie不会在用户登录到wordpress网站

时间:2017-10-26 10:28:22

标签: php wordpress curl

下面我通过另一个网站的curl接收帖子数据。并在没有密码验证的情况下在站点B中记录用户。 当我检查用户是否在此处登录时,它返回true。当我回显当前用户时,它返回来自站点B数据库的那个是正确的。

但是当我手动或通过重定向访问网站B时,它似乎没有登录用户。

为什么这样?如何自动启用用户登录?

$user = $_POST;
    $a = get_user_by('login', $user['data']['user_login']);

 wp_set_current_user( $a->data->ID );
 wp_set_auth_cookie( $a->data->ID );
 do_action('wp_login', $a->data->user_login, $a);
echo site_url();
var_dump(wp_get_current_user());
exit;

1 个答案:

答案 0 :(得分:0)

“为什么会这样?” - 因为您要在服务器端进行CURL请求登录 - 并且在请求完成后 - 一切都被遗忘和清理。

我建议你为此使用一次性令牌逻辑。 例如,在A端,您可以生成此类链接并将网页重定向到:http://B/?auth_token=SOME_CRYPTED_TOKEN_HERE

SOME_CRYPTED_TOKEN_HERE - 是一些加密信息,包含用户ID,登录信息等。

在B侧编写检查

的简单脚本
if (isset($_GET["auth_token"])) {
 //do some decrypt here and check if auth_token is valid, and after decryption use ID and login to make auth
 wp_set_current_user( $ID );
 wp_set_auth_cookie( $ID );
 do_action('wp_login', $LOGIN);
}

我希望这个想法很明确。