php - WooCommerce:如何通过 REST API 检查用户授权
问题描述
在我的商店里有一个 iframe,其中放置了产品。iframe 可以保存选中的产品配置,但是只有授权用户才能这样做。因此,需要检查令牌是否在登录时进入。Wordpress 提供了函数 is_user_logged_in () 但它不适合我。我的问题是:有没有办法通过 REST API 来做同样的事情?
解决方案
https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/
默认情况下,WP REST ajax 调用本身不会传递 cookie。您可以按照上述参考,使用这种方式:
在 PHP 中:
<?php
wp_localize_script( 'wp-api', 'wpApiSettings', array(
'root' => esc_url_raw( rest_url() ),
'nonce' => wp_create_nonce( 'wp_rest' )
) );
在 JS 中:
$.ajax( {
url: wpApiSettings.root + 'wp/v2/posts/1',
method: 'POST',
beforeSend: function ( xhr ) {
xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce );
},
data:{
'title' : 'Hello Moon'
}
} ).done( function ( response ) {
console.log( response );
} );
WP 将自动在 REST 中设置用户。你现在可以使用is_user_logged_in()
了。
推荐阅读
- c# - 在这种情况下处理异常的最佳方法是什么
- selenium - 无法使用 IE11 和 Selenium 使用 Python 检索 page_source
- django - Django + Stripe,如何在 Stripe 结帐页面中添加地址字段,
- r - 循环拆分大数据框并在 R 中写入多个 CSV 文件
- gcc - 在 Linux 上交叉编译 gcc 10.1.0 for avr 失败
- gradle - gradle maven 发布插件:无法通过“发布”上传 zip
- django - CreateView 错误 NOT NULL 约束失败:members_experience.CustomUser_id
- flutter - Flutter 中类似 Laravel 的路由模式
- r - 从句子转换器创建对象时 GPU 内存泄漏
- java - 快速提问,为什么我的指数有上限?