2017-02-11 11 views
1

私は安全であり、したがってノンスを使用する必要があるが、動作させることができないアプリがあります。 私はいくつかのオプションを試しましたが、検証が機能しないので、何かが見当たりません。wp-rest apiアプリケーションでワードプレスノンスを使用していない

私のjsのコードは次のとおりです。

ナンスは、次のコードをページに追加され
function placeNew(next){ 
    _nonce = $('input#_nonce').val(); 
    request = $.ajax({ 
    type: 'POST', 
    url: url_path + '/foo/v1/newbee', 
    data: {bid : next , _nonce : _nonce}, 
    security: '<?php echo wp_create_nonce("a"); ?>', 
    dataType: 'json' 
}); 
request.done(function (response, textStatus, jqXHR){ 
    str = JSON.stringify(response); 
    if(response["error"]){ 
    alert(response["message"]); 
    } 

:PHPの中で、以下の機能断片を取得し、nonceを比較するために使用される

$nonce = wp_create_nonce('a'); 
echo "<input type='hidden' id='_nonce' value=" . $nonce ."/>"; 

function ace($request) { 
    global $wpdb; 
    $timestamp = time(); 
    $nonce = (string) $request['_nonce']; 
    $verify = check_ajax_referer('a', $nonce, false); 
    if (! $verify){ 
     $errMsg = $nonce . '-'. $verify .' not validated '; 
     return (object) array(error => true, message => $errMsg); 
    } 

私は常に「検証されていません」というメッセージを受け取ります。 $ nonceは値を持ちますが、$ verifyは決して値を取得しません。 docsによると

答えて

1

:マニュアルAjaxリクエストを作成する開発者にとって

、ナンスは、各要求に を渡す必要があります。 APIは、nonceを使用してアクションがwp_restに設定されています。これらの は、_wpnonceデータパラメータ(POST データまたはGET要求のクエリ)、またはX-WP-Nonceヘッダーを介してAPIに渡すことができます。

あなたが不足している重要な部分は、次のとおりです。

APIはwp_restに設定アクションでナンスを使用しています。

これを機能させるには、wp_create_nonceからwp_restにあなたの行動を命名しなければなりません。ヘッダーとしてnonceを供給

:ドキュメントの状態として、また

wp_create_nonce('wp_rest') 

wp_create_nonce("a") 

だからあなたのコードのために、あなたはすべてのインスタンスを変更する必要があります最も信頼できるアプローチです。

だからあなたのAjaxにこれを追加することは簡単で、のようなものになります。

また
var _nonce = "<?php echo wp_create_nonce('wp_rest'); ?>"; 
$.ajax({ 
    type: 'POST', 
    url: url_path + '/foo/v1/newbee', 
    data: { 
     bid : next 
    }, 
    dataType: 'json', 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader('X-WP-Nonce', _nonce); 
    } 
}); 

を、チェックを修正する

check_ajax_referer('a', $nonce, false) 

は今

check_ajax_referer('wp_rest', '_nonce', false) 
であるべき
関連する問題