WordPress REST API-权限回调

时间:2016-08-23 作者:connorb

我目前正在使用WP-RESTV2插件构建一个小型RESTAPI。一切都很好,但是,在文档中有权限回调,它限制了对某些用户组的访问(这正是我要做的)。提供的语法如下:

\'permission_callback\' => function () {
    return current_user_can( \'edit_others_posts\' );
}
我遇到的问题是,在执行点,当前用户是空的,尽管已作为管理帐户登录和验证(请求之前、期间和之后的cookie中都存在会话令牌)。我认为这可能是因为路由端点返回的页面只包含响应文本,所以我尝试从索引中调用API。php和wp_get_current_user();返回空的用户对象,因此current_user_can(\'condition\') 永远不会成功。

谢谢你的帮助!

1 个回复
SO网友:connorb

问题是因为我没有生成和发送nonce 请求的值。为了生成nonce 价值本地化a的值wp_create_nonce(\'wp_rest\') 函数调用。

wp_localize_script(\'application\', \'api\', array(
    \'root\' => esc_url_raw(rest_url()),
    \'nonce\' => wp_create_nonce(\'wp_rest\')
));
然后可以访问window 可通过Javascript访问的浏览器的对象nonce 然后应作为请求标头的值传递X-WP-Nonce 执行XHR/HTTP请求时。其示例如下:

var request = new XMLHttpRequest();

request.addEventListener(\'load\', function() {
    console.log(this.responseText);
}

request.open(\'GET\', api.root + \'mynamespace/posts\');

// You must set headers after the request has been opened and before itself.
request.setRequestHeader(\'X-WP-Nonce`, api.nonce);

request.send(); // will fire the event listener above when fulfilled.
我希望这是有帮助的。

相关推荐

如何在WordPress 4.7+中使用REST-API进行元查询?

我试图通过元查询进行过滤,但无论我尝试什么,我都无法使其工作。基本上,我希望通过rest API进行此查询:wp-json/wp/v2/books?meta_query[relation]=OR&meta_query[0][key]=arkivera&meta_query[0][value]=1&meta_query[0][compare]== 我尝试了几个不同的自定义字段,但它总是返回所有post对象。在我的函数文件中,我添加了:function api_allow_m