WP_SignOn在本地运行,而不是在HTTPS上运行

时间:2020-01-07 作者:andy

在我的localhost环境中,下面的代码工作得很好

    $creds[\'user_login\'] = $user_login;
    $creds[\'user_password\'] = $user_password;
    $user = wp_signon( $creds, true );
    if(!is_wp_error($user)) {
        wp_redirect(\'/home\');
        exit;
    }
但在服务器上,它不再工作了。用户从未登录。该网站托管在外部服务器上的https子域上。

我尝试在wp配置中设置cookie域:

define(\'COOKIE_DOMAIN\', \'.domain.com\');
还包括子域:

define(\'COOKIE_DOMAIN\', \'sub.domain.com\');
对我来说都不管用。

服务器运行在带有Varnish的PHP 7.1上。Swift性能用于缓存。

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

清漆是问题所在。

Varnish从响应中删除Cookie。这就是为什么它在我们的情况下不起作用!

SO网友:Tejas Gajjar

您需要在wp\\u登录后设置身份验证cookie。添加此代码并尝试让我知道结果。

$user = wp_signon( $creds, false );

$userID = $user->ID;

wp_set_current_user( $userID, $creds[\'user_login\']  );
wp_set_auth_cookie( $userID, true, false );
do_action( \'wp_login\',$creds[\'user_login\']  );