为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用基于 cookie 的身份验证从 REST API 获取用户

如何使用基于 cookie 的身份验证从 REST API 获取用户

PHP
绝地无双 2022-12-30 17:18:25
快速上下文:我正在评估为我们的 WIP 无外设 WordPress 站点的一些自定义 restful 端点进行身份验证的可能解决方案。我想要实现的是is_user_logged_in使用基于 cookie 的身份验证在我的自定义端点中返回 true。这是我当前的设置,这是我尝试过的。我有以下内容functions.php// create an endpoint for getting a noncefunction get_nonce() {    return new WP_REST_Response(array('nonce' => wp_create_nonce( 'wp_rest' )));}add_action( 'rest_api_init', function () {    register_rest_route('my-site', 'nonce', array(        'methods' => 'GET',        'callback' => __NAMESPACE__ . '\get_nonce'    ));} );function get_orders() {    if ( !is_user_logged_in() ) {        return new WP_Error( 'not_authorized', 'You are not logged in', array('status' => 401) );    }    $orders = // ...    return new WP_REST_Response($orders);}add_action( 'rest_api_init', function () {    register_rest_route( 'my-site', 'orders', array(        'methods' => 'GET',        'callback' => __NAMESPACE__ . '\get_orders',    ));} );因此,总而言之,这会创建两个端点:/wp-json/my-site/nonce生成随机数/wp-json/my-site/orders提取一些用户数据我所做的是:打电话GET /wp-json/my-site/nonce来抢随机数称呼GET /wp-json/my-site/orders?_wpnonce=thepreviousnonce我得到的是这个错误:{  "code": "rest_cookie_invalid_nonce",  "message": "Cookie nonce is invalid",  "data": {    "status": 403  }}我只是使用浏览器和 URL 来发出请求,并且我已经检查过每个请求中是否包含 cookie。我错过了什么?为什么我得到 403?
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您生成的随机数无效。在 rest 上下文中制作 nonce 是行不通的,因为那也需要一个 nonce!它返回的是一个注销的用户随机数。如果您需要基于令牌的身份验证,我推荐JWT wp rest auth 文档


查看完整回答
反对 回复 2022-12-30
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号