Wordpressのデータを使用する外部ダッシュボードを作成しています。明らかに、 WP REST API v2 を使用します。
従来のWPダッシュボードから完全に切り離したいのですが、WP Admin Dashboardに「裏から」ユーザーをログインしたいので、ユーザーを一部のユーザーにリダイレクトできます。プラグイン管理UIページ。 WP REST APIの制限により
これが私たちがしたことです、私たちはその下にcreateAuthkeyという機能を持つカスタムプラグインを作成しました。それはログインユーザがそれからキー(トークン)を作成します。
私たちが気にしている重要な部分は、ログインが成功した場合(wp_authenticate())、ブラウザ上でwp_auth_cookieも保存したいので、ユーザーが/ wp-adminに直接ログインしていなくてもブラウザがWP管理ページに入ったら、それらをログインさせたいので、wp_set_auth_cookie()を使用しますが、AJAX応答は使用しません。返されたcookieをブラウザのリソースに保存します(ただし、応答として正しく返します)。したがって、ユーザーがWP管理ページにリダイレクトされると、ログアウトされます。
function createAuthKey( WP_REST_Request $request )
{
// Get login information
$username = $request->get_param( 'username' );
$password = $request->get_param( 'password' );
$user = wp_authenticate( $username, $password );
if ( is_wp_error( $user ) ) {
return false;
}
$converter = new Encryption;
$encoded = $converter->encode($username . ":" . $password);
// Set Cookie: NOT SAVED TO BROWSER!!!
wp_set_auth_cookie($user->ID, true);
return ['key' => $encoded, 'cookie' => $_COOKIE];
}
私はあなたのカスタムダッシュボードがWordPressのインストールとは異なるドメイン/サブドメインにあると思います。 Cookieは現在のドメインに対してのみ設定できます。
通常、クッキーはクロスドメインでは機能しません。だからあなたのダッシュボードはWordPressウェブサイト用のクッキーを作成することができません。理論的には、いくつかのサーバー構成で迂回することは可能ですが、この手法はユーザーのブラウザでサポートされなければなりません。