是否对REST API终结点运行两次权限检查?

时间:2018-02-14 作者:Shotster

我正在使用WP-restapi制作一个插件,一切似乎都按照预期工作。然而,有一种行为我不理解。这个authPermissionCheck() 方法已执行twice 对于生成输出之前的每个请求-第一here 然后here. 这看起来效率很低。有人知道为什么吗?

以下是我的插件代码的相关部分(精简):

class My_REST_Controller
{
    public function __construct()
    {
        add_action( \'rest_api_init\', function()
        {
            $this->user = wp_get_current_user();

            register_rest_route( \'myplug/v1\', \'/auth\', array(
                array(
                    \'methods\'  => \\WP_REST_Server::READABLE,
                    \'callback\' => array( $this, \'authenticate\' ),
                    \'permission_callback\' => array( $this, \'authPermissionCheck\' )
                )
            ));
        });
    }

    // This method is called twice when the
    // auth endpoint is hit. Why?
    public function authPermissionCheck()
    {
        if ( ! user_can( $this->user, \'read\' ) ) {
            return new \\WP_Error( \'rest_forbidden\', esc_html__(
                \'No permission.\', \'my-text-domain\' ),
                array( \'status\' => 401 )
            );
        }
        return false;
    }
}

1 个回复
SO网友:dingo_d

显然,这是故意的。

https://github.com/WP-API/WP-API/issues/2400

对运行一次权限回调Allows 标头,第二次为回调本身。

没有深入了解原因:/

结束

相关推荐

更新页面(update-core.php)和插件页面(plugins.php)恢复到主页

我在Wordpress网站的管理视图中收到通知,我有一个网站和插件的可用更新(在我的网络管理仪表板中,在“插件”和“更新”旁边的红色圆圈中有“1”)。。。但当我尝试同时转到“更新”页和;插件页面,是否显示主页?此时的URL为http:///wp-admin/network/update-core.php/和http:///wp-admin/plugins.php/分别地因此,我永远无法到达真正的更新页面,也无法更新我的Wordpress或插件。如何显示更新或插件页面?