Wp-json API:从管理模式点击API链接时未登录

时间:2017-08-17 作者:ptf

我有一个自定义帖子类型的元框,其中有一个链接。此链接指向wp json rest API中的端点。在我使用的rest API的端点上current_user_can 验证用户是否已登录。

这是端点,只是更改了名称:

register_rest_route( \'myapi\', \'/download_file/\', array(
    \'methods\' => \'GET\',
    \'callback\'    => \'file\',
    \'permission_callback\' => function () {
        return current_user_can(\'administrator\');
    }
) );
端点下载文件。关键是您必须登录才能下载文件。然而,当我点击链接时,我得到一个403.

这是链接标记:

<a href="http://example.com/wp-json/myapi/download_file" target="_blank">
  Download file
</a>
我是否需要向此链接添加其他内容?或者做一个post请求,证明我已经登录?

编辑:也许这就是问题所在:

On login, wordpress uses the wordpress_[hash] cookie to store your authentication details. Its use is limited to the admin console area, /wp-admin/ 从…起here.

1 个回复
SO网友:ptf

我需要在URL中包含nonce。通过添加?_wpnonce=<?= wp_create_nonce( \'wp_rest\' ); ?> 到我的URL。有一些信息here, 但我认为不需要nonuce,除非我尝试更改数据或类似的东西。WordPress认证cookie就足够了。

结束

相关推荐

Authentication/API Questions

我们正在尝试使用S2Member来管理我们的WP站点和我们正在启动的Flash程序的成员资格。我们希望在用户登录并保持登录状态时使用S2Member对其进行身份验证。问题:Java层需要知道哪个用户登录到Wordpress(如果有的话),以便它可以将正确的数据返回到flash层。建议的解决方案:Wordpress的cookie也应该包含在Flash到Java的请求中。Java可以使用这些cookie来查询Wordpress DB以获取用户ID。我们需要知道的是:1。是否可以从数据库或文件系统获取带有coo