快速上下文:我正在評估為我們的 WIP 無外設(shè) WordPress 站點(diǎn)的一些自定義 restful 端點(diǎn)進(jìn)行身份驗(yàn)證的可能解決方案。我想要實(shí)現(xiàn)的是is_user_logged_in使用基于 cookie 的身份驗(yàn)證在我的自定義端點(diǎn)中返回 true。這是我當(dāng)前的設(shè)置,這是我嘗試過的。我有以下內(nèi)容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', ));} );因此,總而言之,這會創(chuàng)建兩個端點(diǎn):/wp-json/my-site/nonce生成隨機(jī)數(shù)/wp-json/my-site/orders提取一些用戶數(shù)據(jù)我所做的是:打電話GET /wp-json/my-site/nonce來搶隨機(jī)數(shù)稱呼GET /wp-json/my-site/orders?_wpnonce=thepreviousnonce我得到的是這個錯誤:{ "code": "rest_cookie_invalid_nonce", "message": "Cookie nonce is invalid", "data": { "status": 403 }}我只是使用瀏覽器和 URL 來發(fā)出請求,并且我已經(jīng)檢查過每個請求中是否包含 cookie。我錯過了什么?為什么我得到 403?
1 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊
您生成的隨機(jī)數(shù)無效。在 rest 上下文中制作 nonce 是行不通的,因?yàn)槟且残枰粋€ nonce!它返回的是一個注銷的用戶隨機(jī)數(shù)。如果您需要基于令牌的身份驗(yàn)證,我推薦JWT wp rest auth 文檔
- 1 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消