WordPressの "エンドポイント"関数を "ヘッダー認証をキャンセルする"でどのように検証できるか(WordPress $ ===は、生成したAPIキーを使用します。(注:別のエンドポイントではなく、元のエンドポイント))
私は自分の「暗号」クラス/機能を持っています。リクエストでは、暗号化されたキーを送信し、「wp-function」などから「暗号化されたキー」を「復号」して、リクエストを許可する必要があります。
wordpress独自のエンドポイントライブラリでこれをすべて実行できるようにする必要があります。
私のクエリ構造の簡単な例:
$.ajax({
type: "POST",
url: "http://localhost/workspace/wordpress/wp-json/wp/v2/posts?request=<?php echo $encrypted; ?>",
dataType: "json"
});
[〜#〜] php [〜#〜]
<?php echo $encrypted; ?>
<?php // "z0/8Q6cuMWBlZGzfTwOVi9HwCpKThN9Ju/o/MywK74vimB467vjGfKqoDVQdyKIdmXCxxE=" ?>
functions.phpまたはe.g. PHPページ:復号化後
<?php echo $decrypted; ?>
<?php // "Secret Password" ?>
<?php // I will verify my key, and to let
function checkApiAuth( $result ){
$yourEncryptAPIKey = $_GET['request'];
if( yourDecryptFn( $yourEncryptAPIKey ) === $realKey ):
$result = true;
else:
$result = false;
endif;
return $result;
}
add_filter('rest_authentication_errors', 'checkApiAuth');
rest_authentication_errors
フィルターを使用できるように聞こえます:
これは、認証メソッドからAPIに
WP_Error
を渡すために使用されます。[...]フックされた認証方法が実際に試行されていない場合、
null
が返されます[...]。同様に、コールバックは、エラーをチェックする前に値がnull
であることを確認する必要があります。
WP_Error
エラーが発生した場合、インスタンスを返すことができます[...]。コールバックはtrue
を返し、認証方法が使用され、成功したことを示すことができます。
コード例については、WPが wp-includes/restのX-WP-Nonce
ヘッダーのカスタムチェックを実装した方法をご覧ください。 -api.php807行目以降 。
(関数rest_cookie_check_errors
は 優先度100のrest_authentication_errors
フィルターに追加されます 。)