快速上下文:我正在評估為我們的 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 文檔
- 1 回答
- 0 關注
- 111 瀏覽
添加回答
舉報
0/150
提交
取消