2017-10-26 13 views
0

以下、他のサイトのカールを介して投稿データを受信して​​います。また、パスワード検証なしでユーザーをサイトBにログインさせる。 ユーザーがここにログインしているかどうかを確認すると、trueを返します。現在のユーザーをエコーすると、正しいサイトBのデータベースから返されます。wp_set_auth_cookieは、WordPressのサイトにログインしていません。

ただし、サイト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; 

答えて

0

「なぜ?」 - と、要求が行われた後 - - あなたはそれがあなたのサーバ側で起こるCURLリクエスト、内部でログインするために作るので、すべてを忘れ、洗浄ます。

この目的でワンタイムトークンロジックを使用することをお勧めします。 側で例えば、あなたがそのようなリンクを生成し、それにWebページをリダイレクト: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); 
} 

私はアイデアがはっきりしていることを願っています。

関連する問題